看到论坛上那么多人问关于JDK配置的问题,特别是配置之后,编译java文件的时候,总是碰到这样一个问题,错误提示为:

=================================================================================================
Microsoft Windows 2000 [Version 5。
00。2195]
(C) 版权所有 1985-1998 Microsoft Corp。
C:>javac HelloWorld。java
C:>java HelloWorld
Exception in thread "main" ng。
NoClassDefFoundError: HelloWorld
C:>
以上为出错信息
源程序如下:
class HelloWorld {
public static void main(String[] args) {
// Display "Hello World!"
intln("Hello World!");
}
}
编译通过 运行怎么就Exception in thread "main" ng。
NoClassDefFoundError: HelloWorld???????/
===================================================================================================
对于以上的问题,大家一贯的解决方法为,把HelloWorld。
java文件所在目录的路径加入参数classpath中,如:set classpath=%classpath%;。;……(这里要注意其中的“。;”,一会儿我们做个试验看看到底是什么意思)。我试过了,好像不行,不知道是不是我没有配置好。至于给这个问题解答的网友有没有具体实践过,我不得而知。
于是,我自己做了一次尝试。
我使用Win2000+JDK1。30,在 下载j2sdk1_3_0-win。exe,然后点击安装,安装系统默认的路径,安装到c:盘,即:c:jdk130。安装完成需要配置环境,这涉及到三个参数:path、classpath、java_home。
在我的电脑-》属性-》高级-》环境变量 中,分别添加这三个变量,他们的值分别为:
name value
java_home c:jdk130
classpath 。;C:jdk13lib ools。jar;C:jdk13libdt。
jar;C:jdk13in;
path C:jdk13in;
然后确定就可以了。
注解:classpath用于指明所有用于引用的类所在的目录,它允许用户把自己的类放在不同的目录中,但应该让JDK编译工具知道它们在那里。例如:set classpath=。
;C:jdk13lib ools。jar;C:jdk13libdt。jar;C:jdk13in;命令中的第一个圆点指明classpath当前的工作目录。这个圆点非常有用,当不愿意输入完整的当前目录路径时,可以用它来代替,java程序允许这么做。
在d:新建子目录java,编写一个java文件,名字叫Hello。java,进入dos模式,进入到目录d:java,然后敲入javac Hello。java,编译通过。然后可以使用java Hello运行生成的class文件,没有问题,结果正常输出。
若是我们在Hello。java文件中的第一句加入:package hello; ,然后编译,没有出现错误,运行时我们会看到如下错误信息:
Exception in thread "main" ng。NoClassDefFoundError: Hello (wrong
hello/Hello)
at fineClass0(Native Method)
at fineClass(ClassLoader。
java:486)
at fineClass(SecureClassLoader。
1)
at fineClass(URLClassLoader。java:248)
at cess$100(URLClassLoader。java:56)
at 。
URLClassLoader$ n(URLClassLoader。java:195)
at Privileged(Native Method)
at ndClass(URLClassLoader。java:188)
at ng。ClassLoader。
loadClass(ClassLoader。java:297)
at sun。misc。Launcher$AppClassLoader。loadClass(Launcher。java:286)
at ng。ClassLoader。loadClass(ClassLoader。
java:253)
at ng。ClassLoader。loadClassInternal(ClassLoader。java:313)

这时,我们在编译的时候,应该这样:javac -d 。 Hello。java

这样会在当前目录下产生一个新的子目录,目录名字就是hello。

我们可以用一下两种方法运行编译好的文件,在当前目录下,敲入:java hello/Hello或者java hello。Hello ,这样我们就可以看到运行结果了。