环境变量设置正确,类文件名和生成的文件名相同,大小写也没问题,javac命令后可以产生相对应的类,但就是不能执行,用java命令去执行的时候显示:Exception in thread "main"java.long.NoClassDefFoundError 

解决方案 »

  1.   

    编译通过了不一定能执行,lz看看有没有public static void main(String args[])函数的实现。
      

  2.   

    java xxx
    注意没有后缀class,大小写正确
      

  3.   

    main方法应该这样写public static void main(String args[]){}
      

  4.   

    是你的main 函数问题把 
    main"java.long.NoClassDefFoundError
      

  5.   

    public static void main(String args[]){}主函数问题
      

  6.   

    看看classpath里面是不是写了.;
      

  7.   

    public class HelloWorld { 
        public static void main(String[] args) { 
            System.out.println("Hello, World!"); 
        }

    这个是我的程序
      

  8.   

    我用的是jdk1.6.0_13,是不是和vista不兼容啊?
      

  9.   

    classpath不用设置,
    cd来到你的目录
    javac HelloWorld.java 
    java HelloWorld 
      

  10.   

    你先用java -version 看下版本对不对, 是不是你安装的。
      

  11.   

    不知道从JDK1.5之后SUN公司是怎么考虑问题的,他们对编译进行了一些修改,你在编译时必须加上-d参数。即要象下面这样写。javac -d c:\ HelloWorld.java注意:-d c:\是指将生成的带包(package)class文件放到c:\
    注意:c:\与HelloWorld.java之间有一个空格。执行的时候要在C:\下面输入下面的命令:
    java HelloWorld你试试。
      

  12.   

    另外,很多回贴的同志都把错误信息看错了。
    Exception in thread "main"java.long.NoClassDefFoundError翻译过来的意思是“在主线程存在一个异常:无类定义发现错”
    其中的"main"是要和前面的thread联系起来的,并不是没有发现main函数,而是翻译成“主线程”。
    无类定义发现错误通常都是你要执行的那个类的路径没有写对。通常我们都是写的相对路径,很容易找错位置。再加上自从JDK1.5版本之后,更出现了奇怪的现象。假设在C;\下有一个Java文件:Hello.java。内容如下:package aaa;
    public class Hello{
        public static void main(String[] args){
            System.out.println("Hello!!!!");
        }
    }当你在cmd下面输入:
    c:\>javac Hello.java你会发现,class文件已经生成,但是一个裸class(即只有一个class,而不是有一个aaa包,里面装着class)。在JDK1.4时,包aaa是会被生成的。这时如果你想再执行这个Hello.class是不行的,因为没有aaa包,所以怎么输路径都不对,总会报楼主说的那个错误。
    如果你使用了-d参数,指定编译生成文件的位置,象下面这样:
    c:\>javac -d c:\ Hello.java你会发现,有aaa包,点进去后里面有Hello.class,而这时你只要输入:
    c:\>java Hello
    Hello!!!!哈哈,执行成功啦!!!注意你的java Hello命令要在C盘根目录下面执行!否则相对路径不对,仍然会报“无类定义发现错”
      

  13.   

    应该是classpath设置了的问题
    我上次也一样,把classpath去掉就ok了
      

  14.   

    如果你是将源文件与编绎后的文件保存在不同的文件夹下,你可以看一下是否你的classpath是否设置正确
      

  15.   

    可能前面有朋友提到了,是不是classpath的配置没设置好,路径最前面要有.;
      

  16.   

    [code=BatchFile]@ECHO OFF
    set JAVA_HOME="C:\Program Files\Java\jdk1.6.0_05"
    set classpath=.\bin;%classpath%
    set path=.;%JAVA_HOME%\bin;%path%
    set JAVA_CMD="C:\Program Files\Java\jdk1.6.0_05\bin\java"
    %JAVA_CMD% -ea:com.test.scjp.TestAssert com.zhigang.scjp.TestAssert file1
    pause[/code]
    write a batch file to run your java classes file
      

  17.   

    你的类中,有没有package的字样呀,如果是包的问题,那你可真的没有活啦!
      

  18.   

    可能两个地方
    1、你这个程序文件名必须为HelloWorld.java
    2、有没有加包,package,如果加了运行时必须加上包名.类名
      

  19.   

    应该在classpath里添加.Class文件所在的文件目录。
    比如:你的.CLASS文件在D:\h目录下。则应该在classpath里添加D:\h
      

  20.   

    java -classpath .; XXXX.jar xx.xx.Main
      

  21.   

    unix下可以实现一次编译 到处运行的可能
    我想楼主的环境变量还是要重新考虑设置的,如果生成class,java xxx我想是可以找得到class执行的;
      

  22.   

    看看你的环境变量 是不是有CLSSSPATH =  .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;