使用命令行创建 Jar 文件时出现问题

发布于 2024-11-29 23:13:54 字数 2374 浏览 0 评论 0原文

我尝试使用命令行创建 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所说,我在清单文件中添加了类路径...现在是我的应用程序Jar文件运行成功......

谢谢大家的快速响应......

I have tried to create Jar file using Command Line.

My Manifest file:

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

My Files and Location of that files:

Location : D:\Application
Files :

 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

To create jar file i tried:

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

But the jar file is created. If i click that jar file, Error message shows like below,

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

Thank for all....My problem solved by adding new line in Manifest File....Thank you all...

But now i have another problem.....

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>

I think this problem occurs due to to class path not set to mysql-connector....I have added this jar file in my Application.....How to setclass path and run my Application jar file successfully.....

please help me....

Thank you...I cleared..this problem also...As Trisstan said, I added classpath in Manifest file...Now My Application Jar file Run Succesfully.....

Thank You all for your Quick Response......

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

蓝色星空 2024-12-06 23:13:54

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

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

来自: http://download.oracle.com/javase/tutorial/deployment /jar/appman.html

Add a newline at the end of your manifest file.

Warning: The text file must end with a new line or carriage return. The last line will not be parsed properly if it does not end with a new line or carriage return.

From: http://download.oracle.com/javase/tutorial/deployment/jar/appman.html

南七夏 2024-12-06 23:13:54

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

It may be an error about classpath, because your jar depends on mysql-connector-java-5.1.15-bin.jar

暮年慕年 2024-12-06 23:13:54

确保你的清单文件中有一个回车符,我还猜测你的 jar 文件名应该在清单文件之前,因为你的选项显示 cfm。

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

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

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

make sure there is a carriage return in your manifest file and I am also guessing your jar file name should precede the manifest file as your option says cfm.

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

From the error it looks like it thinks that the jar file is your manifest file. That should be the problem.

update the argument or change the option parameter to mcf I guess..

风苍溪 2024-12-06 23:13:54

对于你的第二个问题:

你的jar可能包含mysql jar的副本。这是行不通的,因为 jar 应该包含类。解决此问题的最简单方法是在清单中指出您的代码取决于 mysql jar。基本上添加以下内容:

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

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

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

For your second problem:

Your jar probably contains a copy of the mysql jar. That does not work because jars are supposed to contain classes. The simplest way to fix this is to indicate in your manifest that your code depends on the mysql jar. Basically add the following:

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

In your jar creation command, do not include the mysql jar. Finally, make sure that your jar and the mysql one are distributed together (in the same directory).

If you really want a single jar, extract the mysql jar and include its contents in the jar you are going to distribute.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文