【问题标题】:Problem when creating Jar file using Command Line使用命令行创建 Jar 文件时出现问题
【发布时间】:2011-10-26 09:40:45
【问题描述】:

我尝试使用命令行创建 Jar 文件。

我的清单文件:

Manifest-Version: 1.0
Created-By: 1.6.0 (Sun Microsystems Inc.)
Main-Class:Home

我的文件和这些文件的位置:

位置: D:\Application 文件:

 images
     add.png
     home.png
     minus.png
 Database.java
 Home.java
 UiDesign.java
 Database.class
 Home.class// This is my main class
 UiDesign.class
 Manifest.txt
 mysql-connector-java-5.1.15-bin.jar

我尝试创建 jar 文件:

D:\Application>jar cmf Manifest.txt MyApp.jar *.class mysql-connector-java-5.1.15-bin.jar images

但是jar文件被创建了。如果我单击该 jar 文件,错误消息显示如下,

加载主类清单属性失败 D:\Application\MyApp.jar

谢谢大家......我的问题通过在清单文件中添加新行解决了......谢谢大家......

但现在我有另一个问题.....

D:\JavaApplication-13-8-2011\Application>jar cfm  MyApp.jar Manifest.txt *.class
 mysql-connector-java-5.1.15-bin.jar images

D:\JavaApplication-13-8-2011\Application>java -jar MyApp.jar
Connect to MySQl
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Unknown Source)
        at Database.getDBConnection(Database.java:14)
        at UiDesign.<init>(UiDesign.java:58)
        at Home.main(Home.java:6)
java.lang.NullPointerException
        at Database.getBrand(Database.java:31)
        at UiDesign.<init>(UiDesign.java:59)
        at Home.main(Home.java:6)
Exception in thread "main" java.lang.NullPointerException
        at UiDesign.<init>(UiDesign.java:64)
        at Home.main(Home.java:6)

D:\JavaApplication-13-8-2011\Application>

我认为这个问题是由于类路径未设置为 mysql-connector....我在我的应用程序中添加了这个 jar 文件.....如何设置类路径并成功运行我的应用程序 jar 文件.. ...

请帮帮我....

谢谢...我也解决了..这个问题...正如 Trisstan 所说,我在 Manifest 文件中添加了类路径...现在我的应用程序 Jar 文件运行成功.....

感谢大家的快速回复......

【问题讨论】:

    标签: java jar


    【解决方案1】:

    在清单文件末尾添加换行符。

    警告:文本文件必须以换行符或回车符结尾。如果最后一行没有以换行符或回车符结尾,则无法正确解析。

    发件人:http://download.oracle.com/javase/tutorial/deployment/jar/appman.html

    【讨论】:

      【解决方案2】:

      确保您的清单文件中有回车,我还猜测您的 jar 文件名应该在清单文件之前,因为您的选项说 cfm。

      Failed to Load Main-Class manifest attribute from D:\Application\MyApp.jar
      

      从错误看来,它认为 jar 文件是您的清单文件。那应该是问题所在。

      更新参数或将选项参数更改为 mcf 我猜..

      【讨论】:

        【解决方案3】:

        可能是classpath的错误,因为你的jar依赖于mysql-connector-java-5.1.15-bin.jar

        【讨论】:

        • 谢谢 Tristan..我在 Manifest 文件中添加了类路径...现在我的应用程序 Jar 文件工作成功...谢谢您的快速响应....
        【解决方案4】:

        第二个问题:

        您的 jar 可能包含 mysql jar 的副本。这不起作用,因为 jar 应该包含类。解决此问题的最简单方法是在清单中 indicate 说明您的代码依赖于 mysql jar。基本上添加以下内容:

        Class-Path: mysql-connector-java-5.1.15-bin.jar
        

        在您的 jar 创建命令中,不要包含 mysql jar。最后,确保你的 jar 和 mysql 一起分发(在同一目录中)。

        如果您真的想要一个 jar,请提取 mysql jar 并将其内容包含在您要分发的 jar 中。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-06-29
          • 1970-01-01
          • 2023-03-10
          • 2010-09-23
          • 2018-02-13
          • 2019-03-16
          • 2012-12-26
          • 2023-03-07
          相关资源
          最近更新 更多