各位大虾,本人刚接触java,遇到一个问题,关于在cmd中用jar打包的NoClassDefFoundError;具体问题描述是这样的,我写了一个sample,叫做Hello.java,代码如下
package pck;
public class Hello{
public static void main(String args[]){
System.out.println("Say Hi");
}
}
之后在cmd中,用javac -d . Hello.java编译,生成的pck\Hello.class的目录结构;
再写一个m.txt的说明文档,内容如下:
Main-Class:(空格)pck.Hello(回车)
我想将这个包结构压成jar,按照命令行的提示,我输的是这个命令,jar cvfm Hello.jar m.txt -C pck/ .
之后生成了Hello.jar;但是用 java -jar Hello.jar 运行的时候会报一个NoClassDefFoundError:pck/Hello,说是找不到这个类,这我就不明白了,命名是有啊解压这个jar,我也能看到完整的包结构;怎么解决呢?望路过的哥哥姐姐帮忙看一眼
(P.S.我的Class_path里边添加了.)

解决方案 »

  1.   

    错误在 jar cvfm Hello.jar m.txt -C pck/ .mkdir classes
    javac -d classes Hello.java
    jar cvfm Hello.jar m.txt -C classes .你打开你打包的Hello.jar,Hello.class不在 pck 目录下,所以就出错了。
      

  2.   

    非常非常感谢!果然 
    mkdir classes
    javac -d classes Hello.java
    jar cvfm Hello.jar m.txt -C classes .
    没问题,但我还有一事不明,jar压缩的时候 最后用的classes .  而不是用pck/ . 我看二者压出来的结构看上去都一样,那为什么前者对,后者不对呢?
    先道谢了,非常感谢
      

  3.   

    -C pck . 和 -C classes . 生成的jar文件不一样。
    使用 jar tf Hello.jar 查看就知道了。