日期:2014-05-20  浏览次数:20841 次

jar打包问题
刚看了一下jar打包的问题,没有成功,就是一个HelloWorld的程序,代码如下:
[code=Java][/code]
package jarTest;

public class HelloWorld 
{
public static void main(String args[])
{
System.out.println("Hello World!");
}
}

运行 E:\eclipse\workspace\smilelee\jarTest\jar cvf hello.jar HelloWorld.class
  E:\eclipse\workspace\smilelee\jarTest\java jar hello.jar
有异常产生
Exception in thread "main" java.lang.NullPointerException
  at sun.launcher.LauncherHelper.getMainClassFromJar(Unknown Source
  at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
后尝试写了一个清单manifest.mf,就只有一行
Main-class:jarTest.HelloWorld
后面有两个空行

e:\eclipse\workspace\smilelee\bin\jarTest>jar cvfm hello.jar manifest.MF HelloWorld.class
然后就悲剧了
java.io.IOException: invalid header field
  at java.util.jar.Attributes.read(Attributes.java:410)
  at java.util.jar.Manifest.read(Manifest.java:199)
  at java.util.jar.Manifest.<init>(Manifest.java:69)
  at sun.tools.jar.Main.run(Main.java:172)
  at sun.tools.jar.Main.main(Main.java:1177)
不懂为什么不行?用eclipse导出的时候总是会打包很多其他的文件,我想是因为我不晓得那个launch configuration要选什么,我依然是选的要打包的文件,结果是可以运行的,但是就是包含了那个包的其他文件。。

------解决方案--------------------
直接用eclipse export launch configuration 应该选择你的main函数 所在的类吧~你试试~
------解决方案--------------------
mkdir classes
javac -d classes HelloWorld.java
jar cvfm hello.jar manifest.mf -C classes .
------解决方案--------------------
你把这个编译出来的文件放一个文件夹里面 然后对这个文件夹打包试试看