很简单的一个例子
package lx;
class Hello 
{
public static void main(String[] args) 
{
System.out.println("Hello World!");
}
}目录结构为 
D:\hello
    | lx
       | Hello.class
    | manifest.mfmanifest.mf里的内容是
Main-Class:  lx.Hello (有回车)打包命令是
jar cvfm hello.jar manifest.mf hello
压缩成功,在d:\hello下生成一个hello.jar
然后我用 java -jar hello.jar (已经入D:\hello目录下)
它抛出一个异常:Exception in thread "main" java.lang.NoClassDefFoundError:  lx/Hello而我直接用 java lx/Hello
执行是正常的我的环境配置是
    java_home    C:\Program Files\Java\jdk1.6.0
  PATH         C:\Program Files\Java\jdk1.6.0\bin
  CLASSPATH    .;C:\Program Files\Java\jdk1.6.0\lib\tools.jar;C:\Program Files\Java\jdk1.6.0\jre\lib\rt.jarOS是vista sp1
以上哪里有问题吗
请指教

解决方案 »

  1.   

    你的打包和压缩应该都没有问题,
    你把打包好的hello.jar放入C:\Program Files\Java\jdk1.6.0\lib下
    然后在classpath中把C:\Program Files\Java\jdk1.6.0\lib\hello.jar加到环境变量classpath里面,
    javac hello.java试一下!应该可以了
      

  2.   

    jar cvfm hello.jar manifest.mf lx.Hello 第一,你没指定package
    第二,你的类是Hello不是 helloJAVA是区分大小写的
      

  3.   

    好象命令的写法是:jar -cvf jar包名 mf名 类名.class打包打错了吧,另外没区分大小写
      

  4.   


    javac 是编译 跟我这个有什么关系么
    我编译都没有问题
      

  5.   


    manifest.mf 后面的应该是一个要打包的目录
    我按照你打包 它提示找不到lx.Hello文件夹
    但仍然生成一个hello.jar包,但是里面只有manifest.mf,没有lx/hello.class
      

  6.   

    好了 执行成功了
    我把hello改成lx就可以了
    谢谢
      

  7.   

    我用MyEclipse的Export直接生成jar直接运行:java -jar my.jar根本不需要指定什么class之类的。