当前位置: 技术问答>java相关
菜鸟级问题,盼解答
来源: 互联网 发布时间:2017-04-19
本文导语: 我在windows2000下装了JDK1.3.1,写的程序可以编译成CLASS,但无法运行程序,总说找不到类,是不是要把CLASS放到JDK下才好使? 是不是要在windows2000的环境变量中设置类路径啊?要怎么写?谢谢 | ...
我在windows2000下装了JDK1.3.1,写的程序可以编译成CLASS,但无法运行程序,总说找不到类,是不是要把CLASS放到JDK下才好使?
是不是要在windows2000的环境变量中设置类路径啊?要怎么写?谢谢
是不是要在windows2000的环境变量中设置类路径啊?要怎么写?谢谢
|
要。
假定你的jdk1.3.1安装在如下路径:C:jdk1.3.1
1、在我的电脑--〉属性--〉高级--〉环境变量,新建用户变量,classpath
值为:C:jdk1.3.1libtools.jar;.;
新建用户变量path,值为:%Path%;C:jdk1.3.1bin
2、对于java来说,我们要将其他编程语言的观念彻底转变过来,要记住java虚拟机运行的永远是类(在java中全部都是类),所以当你在命令行:
java xxxx
时,其实它是执行名字为xxxx的这个类,而并不是xxxx.class这个文件,这和C/c++以及其他语言所完全不同的。所以,当java虚拟机不能找到xxxx这个类(包括它引用的其他类)时(java自动在你所设定的类搜索路径里搜索,类搜索路径在系统classpath里设置,但是你永远也无法确定和涵盖你在这个系统里面可能产生的所有类搜索路径),它就会报告错误:Exception in thread "main" java.lang.NoClassDefFoundError: d:j2sdkhelloworld/class
此时,你可以用如下办法来解决:
假设你的java程序编译成功并放在 /tmp目录下,文件名为:helloworld.class
(注意大小写,并且假设你没有自定义包)
java -classpath /tmp helloworld
如果你自定义了包,假设是package myjava,并且位于/tmp下,类文件名还是同上:
java -classpath /tmp myjava.helloworld
这是最简单的情况,如果此程序中还引用了大量的其他分布在各个不同位置和包的类则需要另外考虑。但是这种原因根本上就是找不到类定义的明确表现。
假定你的jdk1.3.1安装在如下路径:C:jdk1.3.1
1、在我的电脑--〉属性--〉高级--〉环境变量,新建用户变量,classpath
值为:C:jdk1.3.1libtools.jar;.;
新建用户变量path,值为:%Path%;C:jdk1.3.1bin
2、对于java来说,我们要将其他编程语言的观念彻底转变过来,要记住java虚拟机运行的永远是类(在java中全部都是类),所以当你在命令行:
java xxxx
时,其实它是执行名字为xxxx的这个类,而并不是xxxx.class这个文件,这和C/c++以及其他语言所完全不同的。所以,当java虚拟机不能找到xxxx这个类(包括它引用的其他类)时(java自动在你所设定的类搜索路径里搜索,类搜索路径在系统classpath里设置,但是你永远也无法确定和涵盖你在这个系统里面可能产生的所有类搜索路径),它就会报告错误:Exception in thread "main" java.lang.NoClassDefFoundError: d:j2sdkhelloworld/class
此时,你可以用如下办法来解决:
假设你的java程序编译成功并放在 /tmp目录下,文件名为:helloworld.class
(注意大小写,并且假设你没有自定义包)
java -classpath /tmp helloworld
如果你自定义了包,假设是package myjava,并且位于/tmp下,类文件名还是同上:
java -classpath /tmp myjava.helloworld
这是最简单的情况,如果此程序中还引用了大量的其他分布在各个不同位置和包的类则需要另外考虑。但是这种原因根本上就是找不到类定义的明确表现。
|
程序错了,你运行一下这个
package myprojects.test;
import java.awt.*;
import java.awt.event.*;
class Test extends Frame {
public Test() {
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
dispose();
System.exit(0);
}
});
}
public static void main(String args[]) {
System.out.println("Starting Test...");
Test mainFrame = new Test();
mainFrame.setSize(400, 400);
mainFrame.setTitle("Test");
mainFrame.setVisible(true);
}
}
文件名:Test.java
package myprojects.test;
import java.awt.*;
import java.awt.event.*;
class Test extends Frame {
public Test() {
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
dispose();
System.exit(0);
}
});
}
public static void main(String args[]) {
System.out.println("Starting Test...");
Test mainFrame = new Test();
mainFrame.setSize(400, 400);
mainFrame.setTitle("Test");
mainFrame.setVisible(true);
}
}
文件名:Test.java