Software_King-jdk配置java

public class Hello{

public static void main(String[] args){

 

System.out.println("Hello World!");

}

}

但是class文件 在cmd下无法用 java Hello.class运行出现异常.如下:

Exception in thread "main" java.lang.NoClassDefFoundError: class

Caused by: java.lang.ClassNotFoundException: class

at java.net.URLClassLoader$1.run(Unknown Source)

at java.security.AccessController.doPrivileged(Native Method)

at java.net.URLClassLoader.findClass(Unknown Source)

at java.lang.ClassLoader.loadClass(Unknown Source)

at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)

at java.lang.ClassLoader.loadClass(Unknown Source)

at java.lang.ClassLoader.loadClassInternal(Unknown Source)

Could not find the main class: class.Program will exit.

其中hello是我的文件名……

类名的确也是hello的没错。

程度是

许氏点评:

一句话:环境变量classpath(类路径)没有设置正确,使得JAVA虚拟机无法找到类来执行目标程序。

 

详细原因:java是通过java虚拟机来解释运行的,也就是通过java命令; javac编译生成的.class文件就是虚拟机要执行的代码, 称之为字节码(bytecode),虚拟机通过classloader来装载这些字节码,也就是通常意义上的类.这里就有一个问题,classloader从哪里知道java本身的类库及用户自己的类在什么地方呢?或者有着缺省值(当前路径).或者要有一个用户指定的变量来表明, 这个变量就是类路径(classpath),或者在运行的时候传参数给虚拟机.

通过这段文字,你就知道,为什么javac编译通过了,但是java命令却出错(类定义没找到)的原因了。

就是环境变量classpath(类路径)没有设置正确,使得JAVA虚拟机的classloader无法找到类来执行目标程序。

 

 

下面来搭建jdk1.6.0_25

 

1、新建系统变量JAVA_HOME变量(JAVA_HOME指明JDK安装路径。)

设定值为:

C:\Program Files\Java\jdk1.6.0_25

 

2、在系统变量中的path中添加(Path使得系统可以在任何路径下识别java命令。):

;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

3、新建系统变量CLASSPATH(CLASSPATH为java加载类(class or lib)路径,只有类在classpath中,java命令才能识别.)

设定值为:

.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar

注意一定要加“.”,“.”代表当前目录,即可到处建立.java文件,java class都能找到并编译运行用户的.java文件。

 

 

4.进入dos窗口运行“java –version 如果显示下面内容则成功。

 

posted on 2012-09-17 23:00  Software_King  阅读(174)  评论(0编辑  收藏  举报

导航