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的一些命令不了解,也花费了老半天的时间。在此记录下来,希望有助于其他的初学者少走些弯路。同时也希望高手们能做出更详细的解释,在此不胜感激。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架