找不到主类:程序将存在(main()线程中的异常NoClassDefFoundError)

时间:2014-03-24 14:31:59

标签: java

import java.security.*;
import java.math.*;

public class MD5 {
    public static void main(String args[]) throws Exception{
        String s="Anand";
        MessageDigest m=MessageDigest.getInstance("MD5");
        m.update(s.getBytes(),0,s.length());
        System.out.println("MD5: "+new BigInteger(1,m.digest()).toString(16));
    }
}

在这段代码中,一切都很好,加上它之前正在工作但现在我正在运行上面的代码,提到的异常发生了... 几秒前添加我安装的jdk .. 全部用Path JAVA_HOME完成.. 还是个例外.. 帮助...... !!!!!

JAVA_HOME= C:\ Program Files \ Java \ jdk1.6.0_45 \其中安装了java ..

PATH= C:\ Program Files \ Java \ jdk1.6.0_45 \ bin;

CLASSPATH=%CATALINA_HOME%\ lib \ servlet-api.jar; C:\ Program Files \ Java \ jdk1.6.0_45 \ bin;

编译命令:

javac MD5.java

运行命令:

java MD5

2 个答案:

答案 0 :(得分:0)

您需要告诉java它可以在哪里找到类(或者更确切地说,是包树的根)。 Sinc eyour类在默认包中,位于运行java命令的目录中,您只需要

java -classpath . MD5

java -cp . MD5

您永远不应该依赖全局CLASSPATH环境变量。只要有两个不同的Java应用程序,这样做就是一场噩梦。 JDK bin文件夹在类路径中无关。

请注意,使用默认包是一种非常糟糕的做法,并且您永远不应将自己的文件放在安装Java的目录中。

答案 1 :(得分:0)

.环境值中添加CLASSPATH,告诉jvm查看该类的当前目录。

像:

CLASSPATH=%CATALINA_HOME%\lib\servlet-api.jar;C:\Program Files\Java\jdk1.6.0_45\bin;.;

或者按照@JB Nizet的回答