我操作系统是2003的,jdk安装目录是E:\java\jdk,环境变量像下面这样设置path=E:\Java\jdk\bin,classpath=.;E:\Java\jdk\lib\dt.jar;E:\Java\jdk\lib\tools.jar
我将java源文件hello.java放在E:\Java\jdk\bin目录下,然后在命令行下进入这个目录进行编译,javac hello.java是通过了,hello.class文件也生成在E:\Java\jdk\bin目录下了,但java hello时总是报错Exception in thread "main" java.lang.NoClassDefFoundError: Hello,实在是郁闷啊!!!

解决方案 »

  1.   

    * 错误4: 
      
    Exception in thread \"main\" java.lang.NoClassDefFoundError: HelloWorld 
      
    呵呵,这个嘛,就是著名的类路径(classpath)问题啦。实际上,类路径是在编译过程就   
    涉及的Java中的概念。classpath就是指明去哪里找用到的类,就这么简单。由于我们的   
    HelloWorld没用到其它的(非java.lang包中的)类,所以编译时没遇到这个问题。运行   
    时呢,就要指明你的类在哪里了。解决方法嘛,可以用下面的命令运行: 
      
    java -classpath . HelloWorld   
    “.”就代表当前目录。当然这样做有点麻烦(是“太麻烦”!),我们可以在环境变量   
    中设置默认的classpath。方法就照上述设置path那样。将classpath设为:   
    classpath=.;E:\\java\\jdk\\lib\\dt.jar;E:\\java\\jdk\\lib\\tools.jar 后面的两个建议也设上   
    ,以后开发用的着。   
    java -classpath . HelloWorld(再不出来我就不学java了) 
      

  2.   

    你的类是不是定义了package阿,如果是的话先把package屏蔽掉
      

  3.   

    如果不是默认包,有包名,在java命令中,要把包名加在类名前面如:java org.test.HelloWorld
      

  4.   

    感谢myvicy的回答,你说“由于我们的HelloWorld没用到其它的(非java.lang包中的)类,所以编译时没遇到这个问题”,那你的意思是如果我的程序用了其他类,比如说import java.io.*,那编译时也会出现这个问题了?还有,为什么环境变量中已经配置了classpath路径,运行时还要带上-classpath呢?C命令窗口不会自动读取classpath吗?我配置path后,javac命令就不用带-path啊?这是为什么?
      

  5.   

    我用win2003 照着查下C:\>set
    ALLUSERSPROFILE=C:\Documents and Settings\All Users
    ant_home=D:\eclipse-SDK-3.2-win32\eclipse\plugins\org.apache.ant_1.6.5
    APPDATA=C:\Documents and Settings\Administrator\Application Data
    classpath=.;C:\jdk1.5.0\lib\tools.jar;C:\jdk1.5.0\lib\dt.jar;D:\eclipse-SDK-3.2
    win32\eclipse\plugins\org.junit4_4.1.0\junit-4.1.jar
    ClusterLog=C:\WINDOWS\Cluster\cluster.log
    CommonProgramFiles=C:\Program Files\Common Files
    COMPUTERNAME=NETEC-MARIKS
    ComSpec=C:\WINDOWS\system32\cmd.exe
    FP_NO_HOST_CHECK=NO
    HOMEDRIVE=C:
    HOMEPATH=\Documents and Settings\Administrator
    java_home=C:\jdk1.5.0
    LOGONSERVER=\\NETEC-MARIKS
    NUMBER_OF_PROCESSORS=1
    OS=Windows_NT
    Path=D:\eclipse-SDK-3.2-win32\eclipse\plugins\org.apache.ant_1.6.5\bin;C:\jdk1.
    .0\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem
    PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
    PROCESSOR_ARCHITECTURE=x86
    PROCESSOR_IDENTIFIER=x86 Family 15 Model 1 Stepping 3, GenuineIntel
    PROCESSOR_LEVEL=15
    PROCESSOR_REVISION=0103
    ProgramFiles=C:\Program Files
    PROMPT=$P$G
    SESSIONNAME=Console
    SystemDrive=C:
    SystemRoot=C:\WINDOWS
    TEMP=C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp
    TMP=C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp
    USERDOMAIN=NETEC-MARIKS
    USERNAME=Administrator
    USERPROFILE=C:\Documents and Settings\Administrator
    windir=C:\WINDOWSC:\>
      

  6.   

    path=E:\Java\jdk\bin,这是啥啊  老师没告诉你这里不可以用逗号么  必须分号
      

  7.   

    classpath=.;E:\Java\jdk\lib\dt.jar;E:\Java\jdk\lib\tools.jar里把这个也加上htmlconverter.jar
      

  8.   

    你咋不设置JAVA_HOME呢?
    看看这样来:
    JAVA_HOME=E:\Java\jdk  
    CLASSPATH=.;%JAVA_HOME%\lib;=.;%JAVA_HOME%\jre\lib;
    path==%JAVA_HOME%\bin注意路径不能有空格,最好是拷贝.这样设置后以后重装jdk在别的路径也只是改下JAVA_HOME的,别的不用管。
    还有你要看你path中还有没有别的jdk的设置,比如装了oracle的话他会改你的
      

  9.   

    java -classpath . HelloWorld