我写了一小段非常简单的程序:Hello.java
import java.util.*;public class Hello{
      public static void main(String args[])
      {
            System.out.println("Hello World!");
       }
}然后执行 javac Hello.java
编译通过了,并且生成了字节码文件Hello.class,
但是在执行java Hello时,系统报错:
Exception in thread "main" java.lang.NoClassDefFoundError:Hello
请问这是为什么?

解决方案 »

  1.   

    不要import java.util.*;这一行!
      

  2.   

    import java.util.*;是不用加,不过不是主要问题
    这个都不懂,
    你的classpath有问题,还有就是没有就是缺少包了
      

  3.   

    是不是你的path没设置呀,
    设置办法,右键点我的电脑,选择属性,在高级里面找环境变量,然后找path,然后把你java的安装路径里面的bin这个文件夹的完整目录(如:C:\Program Files\Java\jdk1.5.0_01\bin;)添加到path里面,最后点确定,然后再试试你的程序
      

  4.   

    编译通过,证明PATH路径是没有问题的。出现Exception in thread "main" java.lang.NoClassDefFoundError:Hello的错误,一般都是classpath设置有误。请楼主贴出你classpath的设置来看看。
      

  5.   

    在classpath上加上你的程序所在的路径,肯定没问题了classpath=.;c:\jdk\bin;c:\jdk\lib;c:\jdk\jre\lib;c:\tomcat\common\classes;c:\tomcat\common\lib;C:\jdk\lib\tools.jar;c:\jdk\lib\rt.jar;C:\tomcat\common\lib\servlets.jar;我不知道你的在那里,你按照这个修改一下你的,设置路径:我的电脑-属性-高级-环境变量
    出现这个问题是因为解释器在他认为的路径上搜索不到你的class所在的位置,你要加上奥!!
      

  6.   

    classpath路径问题,
    加上你的hello.class的路径即可。
      

  7.   

    我的JDK是装在C:\j2sdk1.4.2
    CLASSPATH:C:\j2sdk1.4.2\lib\tools.jar;C:\j2sdk1.4.2\lib\dt.jar
    PATH:C:\j2sdk1.4.2;C:\j2sdk1.4.2\bin;
      

  8.   

    path中加一个点"."
    象PATH:C:\j2sdk1.4.2;C:\j2sdk1.4.2\bin;.这样的,试试看
      

  9.   

    倒~~一晕再晕!!!
    //你的CLASSPATH设置
    CLASSPATH:C:\j2sdk1.4.2\lib\tools.jar;C:\j2sdk1.4.2\lib\dt.jar//正确的CLASSPATH设置
    CLASSPATH:.;C:\j2sdk1.4.2\lib\tools.jar;C:\j2sdk1.4.2\lib\dt.jar
      

  10.   

    错了。
    应该是classpath设置错了。
    分析:如果是path 路径出错的话,那么连JAVA命令都不能运行,怎么会编译出Hello.class来。
    既然不是PATH的问题,而且又出现了
    “Exception in thread "main"java.lang.NoClassDefFoundError:Hello”的错误,那么只能是
    classpath的设置错误了。1。如果你用的是WIN2000或者是WINDOWS NT。可以用快捷键 (位于CTRL和ALT中间的一个键        +Pause Break)调出属性对话框。
    2。我的电脑(右击)-属性-高级-环境变量
       设置classpath=.;(你所要保存文件的目录)
       注意(.)是关键。它是说明在当前文件下找   (执行所需要的类)
       举例:如果你的 Hello.java 所在的路径为:e:\javawork\
        而(命令提示符)当前路径为  E:\>javawork>
       这时如果写了.那编译器就在e:\javawork\去找  Hello.class.
      这时,当然能够找到。
      同样,如果没有写点,你也可以把你的classpath这样设置。
      classpath=e:\javawork\
      这样也可以。建议你最好写上点。
      如果还有什么问题,请加我MSN:  [email protected]
      

  11.   

    是不是应该这么写:public static void main(String []args)
    括号在前面