我尝试使用命令行创建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文件,错误消息显示如下,
无法加载Main-Class清单属性 d:\应用程序\ 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所说,我在清单文件中添加了classpath ...现在我的应用程序Jar文件运行成功.....
谢谢大家的快速反应......
答案 0 :(得分:2)
在清单文件的末尾添加换行符。
警告:文本文件必须以新行或回车结束。如果最后一行没有以新行或回车结束,则不会正确解析。
来自:http://download.oracle.com/javase/tutorial/deployment/jar/appman.html
答案 1 :(得分:1)
关于classpath可能是一个错误,因为你的jar依赖于mysql-connector-java-5.1.15-bin.jar
答案 2 :(得分:0)
确保清单文件中有回车符,我也猜测你的jar文件名应该在清单文件之前,因为你的选项是cfm。
Failed to Load Main-Class manifest attribute from D:\Application\MyApp.jar
从错误中看起来它认为jar文件是您的清单文件。那应该是问题所在。
更新参数或将选项参数更改为mcf我猜..
答案 3 :(得分:0)
第二个问题:
你的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中。