zoukankan      html  css  js  c++  java
  • 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的一些命令不了解,也花费了老半天的时间。在此记录下来,希望有助于其他的初学者少走些弯路。同时也希望高手们能做出更详细的解释,在此不胜感激。

    作者:孤旅者
    如果您对本文有意见或者建议,欢迎留言,哪怕是拍砖(^_^)!
    欢迎转载,请注明出处!
    感谢您的阅读,请关注后续博客!
    共享视频教程请访问:JAVA 高级软件工程师视频
  • 相关阅读:
    mybatis之关联关系映射
    spa项目开发之tab页实现
    mybatis整合redis实现二级缓存
    mybatis整合spring
    mybatis动态sql和分页
    Mybatis入门
    使用java代码操作redis
    Redis安装
    IDEA的安装和使用
    Linux入门——安装jdk、tomcat、MySQL以及项目部署
  • 原文地址:https://www.cnblogs.com/gulvzhe/p/2162224.html
Copyright © 2011-2022 走看看