bat调用jar包的两个典型问题
昨天用eclipse开发了一个操作xml文件的bat调用jar小工具。由于第一次使用bat调用自己生成的jar包,遇到了两个觉得比较典型的问题,现记录下来,希望能对其他初学者有所帮助。
一,工具介绍和打包过程
工具作用:按照一定的规则更新xml文件。
使用方法:用bat调用工具。
二,问题一: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的一些命令不了解,也花费了老半天的时间。在此记录下来,希望有助于其他的初学者少走些弯路。同时也希望高手们能做出更详细的解释,在此不胜感激。