bat调用jar包的两个典型问题

昨天用eclipse开发了一个操作xml文件的bat调用jar小工具。由于第一次使用bat调用自己生成的jar包,遇到了两个觉得比较典型的问题,现记录下来,希望能对其他初学者有所帮助。

 

一,工具介和打包

 

工具作用:按照一定的规则更新xml文件。

使用方法:用bat调用工具。

开发过程:在eclipse环境下完成代码的开发和调试。生成jar(在工程上右击=>选择Export=>选择JAR file,点击Next=>选择导出路径和名称,一直点击Next,直到完成),用bat调用生成的jar(java -jar mkNttEstTest.jar D:\mkNttEstTest\input.xml  E:\mkNttEstTest\output.xml(注意命令中的空格))

 

二,问题一:Failed to load Main-Class manifest attribute from mkNttEstTest.jar

 

程序运行的时候,总是需要一个入口,上述问题就是由于没有设置这个程序入口导致的。可以将jar文件用WinRAR打开,展开META-INF文件夹,查看MANIFEST.MF文件,可以发现Main-Class未设置,这就是导致异常的原因所在。解决办法有两种。1,手动添加:将Main-Class: com.cn.wzl.swe.xmltools.XmlFilter (main程序,程序入口)加入MANIFEST.MF文件中。2,自动添加:在用eclipse生成jar包过程的最后一步,选择相应的程序入口。如下图。

     选择自己程序的入口,点击Finish就OK了。再次用WinRAR打开MANIFEST.MF文件,发现选择入口程序后,在MANIFEST.MF文件中自动加入了Main-Class: com.cn.wzl.swe.xmltools.XmlFilter这句话。效果当然也和第一种一样。

 

三,问题二,Exception in thread "main" java.lang.NoClassDefFoundError: org/dom4j/DocumentException

   

    开发这个工具要依赖dom4j等包,打包的时候不能自动将其他依赖包自动包含进来(不能确定有没有方法(^-^)),所以,当程序运行的后,用到依赖包的内容时,就会报NoClassDefFoundError的错误。解决办法:与问题一的第一种解决办法相似,也是在MANIFEST.MF文件的最后加入下面的依赖关系即可:Class-Path: library-1.3.9.jar dom4j-1.6.1.jar jaxen-1.1.jar,各个包之间用空格隔开(注意:记得将依赖包考到与自己生成jar包的相同目录下)

 

四,总结

   

    这两个问题都是很普遍,很典型的问题。由于自己对java的一些命令不了解,也花费了老半天的时间。在此记录下来,希望有助于其他的初学者少走些弯路。同时也希望高手们能做出更详细的解释,在此不胜感激。

posted @ 2011-09-01 17:03  孤旅者  阅读(5534)  评论(1编辑  收藏  举报