数模论坛

 找回密码
 注-册-帐-号
搜索
热搜: 活动 交友 discuz
查看: 2344|回复: 0

JAVA环变量设置

[复制链接]
发表于 2004-5-7 18:35:53 | 显示全部楼层 |阅读模式

<FONT size=+0><!-- 固定文字颜色 -->这篇文章,你看看吧.
Microsoft Windows 2000 [Version 5.00.2195]
(C) 版权所有 1985-1998 Microsoft Corp.
C:\&gt;javac HelloWorld.java
C:\&gt;java HelloWorld
Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld  

C:\&gt;
以上为出错信息
源程序如下:



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





编译通过 运行怎么就Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld???????/
===================================================================================================

对于以上的问题,大家一贯的解决方法为,把HelloWorld.java文件所在目录的路径加入参数classpath中,如:set  
classpath=%classpath%;.;……(这里要注意其中的“.;”,一会儿我们做个试验看看到底是什么意思)。我试过了,好像不行,
不知道是不是我没有配置好。至于给这个问题解答的网友有没有具体实践过,我不得而知。于是,我自己做了一次尝试。

我使用Win2000+JDK1.30,在java.sun.com下载j2sdk1_3_0-win.exe,然后点击安装,安装系统默认的路径,安装到c:盘,即:
c:\jdk130。安装完成需要配置环境,这涉及到三个参数:path、classpath、java_home。在我的电脑-》属性-》高级-》环境变
量 中,分别添加这三个变量,他们的值分别为:


名称=值

java_home=c:\jdk130
classpath=.;C:\jdk13\lib\tools.jar;C:\jdk13\lib\dt.jar;C:\jdk13\bin;
path= C:\jdk13\bin;




然后确定就可以了。

注解:classpath用于指明所有用于引用的类所在的目录,它允许用户把自己的类放在不同的目录中,但应该让JDK编译工具知道它
们在那里。例如:set classpath=.;C:\jdk13\lib\tools.jar;C:\jdk13\lib\dt.jar;C:\jdk13\bin;命令中的第一个圆点指明
classpath当前的工作目录。这个圆点非常有用,当不愿意输入完整的当前目录路径时,可以用它来代替,java程序允许这么做。


在d:新建子目录java,编写一个java文件,名字叫Hello.java,进入dos模式,进入到目录d:\java,然后敲入javac Hello.java,
编译通过。然后可以使用java Hello运行生成的class文件,没有问题,结果正常输出。若是我们在Hello.java文件中的第一句加入
:package hello; ,然后编译,没有出现错误,运行时我们会看到如下错误信息:



Exception in thread "main" java.lang.NoClassDefFoundError: Hello (wrong
hello/Hello)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:486)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.
1)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:248)
at java.net.URLClassLoader.access0(URLClassLoader.java:56)
at java.net.URLClassLoader.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:297)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:286)
at java.lang.ClassLoader.loadClass(ClassLoader.java:253)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:313)  





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

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

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

</FONT>
您需要登录后才可以回帖 登录 | 注-册-帐-号

本版积分规则

小黑屋|手机版|Archiver|数学建模网 ( 湘ICP备11011602号 )

GMT+8, 2024-11-27 08:31 , Processed in 0.057331 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表