刚看了一下jar打包的问题,没有成功,就是一个HelloWorld的程序,代码如下: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要选什么,我依然是选的要打包的文件,结果是可以运行的,但是就是包含了那个包的其他文件。。

解决方案 »

  1.   

     直接用eclipse export launch configuration 应该选择你的main函数 所在的类吧~你试试~
      

  2.   

    Main-class: jarTest.HelloWorld
    :后要空一格
      

  3.   

    mkdir classes
    javac -d classes HelloWorld.java
    jar cvfm hello.jar manifest.mf -C classes .
      

  4.   

        Main-Class: jarTest.HelloWorld
    Main-Class大小写
      

  5.   


    这个方法行得通,能不能解释一下最后一条语句 " -C classes ."?