Topic: 菜鸟求救--Exception in thread "main" java.lang.NoClass.DeFoundError:Sushu

  Print this page

1.菜鸟求救--Exception in thread "main" java.lang.NoClass.DeFoundError:Sushu Copy to clipboard
Posted by: wwdhks
Posted on: 2006-04-23 22:41

小弟不明白到底这个是出什么问题了,我昨天编了一个输入输出流,后来反过来想看看以前编那些程序,以前可以编译运行的,不懂现在怎么搞的,一运行就出线了Exception in thread "main" java.lang.NoClass.DeFoundError:Sushu,每个程序都是出线这样的提示(后面的文件明当然不是每次都一样),我用命令行一编译就出现"无法读取Sushu.java 1错误 ",最后重装java后还是不行,环境变量.路径也设置对了,到底怎么了,希望各位大虾指点,要不小弟只能重装系统了,

2.Re:菜鸟求救--Exception in thread "main" java.lang.NoClass.DeFoundError:Sushu [Re: wwdhks] Copy to clipboard
Posted by: JavaandC
Posted on: 2006-04-24 08:36

你是怎样运行的?路径和Java命令你是如何写的?实在不行你用Eclipse编译一下试试。

3.Re:菜鸟求救--Exception in thread "main" java.lang.NoClass.DeFoundError:Sushu [Re: JavaandC] Copy to clipboard
Posted by: denghanwen
Posted on: 2006-04-24 08:52

可能是的path和classpath没配置好,或许是你的public 类的class名与文件名不一致
你再试一下.

4.Re:菜鸟求救--Exception in thread "main" java.lang.NoClass.DeFoundError:Sushu [Re: wwdhks] Copy to clipboard
Posted by: wwdhks
Posted on: 2006-04-24 13:32

我的class名与文件名一致了,但是不行啊,我们在学校机房不用设置classpath也可以用啊,好像是默认设置了,Eclipse我没有用过,我是用TestPad编的,昨天装了UltraEdit,但是不懂在哪里编译啊.



哦,我想补充一下,我用命令行运行的时候错了,我忘记先用"cd "命令找到要编译的文件,现在搞定这个问题了,但是"Exception in thread "main" java.lang.NoClass.DeFoundError"还是出线这个问题啊.



我查了很多资料,好像都是说没有设置好CLASSPATh路径,到底怎么设置这个路径啊?

{ 不妨多用本論壇的修改功能 -- why }

5.Re:菜鸟求救--Exception in thread "main" java.lang.NoClass.DeFoundError:Sushu [Re: wwdhks] Copy to clipboard
Posted by: hailang1986
Posted on: 2006-04-24 20:09

很可能是classpath没设置好
右键单击"我的电脑",然后选"高级",再选"环境变量"
在下面的"系统变量"中找到"classpath",
如果没有,就自己"新建"一个,
然后在"变量值"写上
".;C:\Program Files\Java\j2re1.4.2_09\lib"
我的目录在"C:\Program Files\Java\j2re1.4.2_09\lib"
记得目录前面有".;",点和分号.

6.Re:菜鸟求救--Exception in thread "main" java.lang.NoClass.DeFoundError:Sushu [Re: hailang1986] Copy to clipboard
Posted by: why
Posted on: 2006-04-24 20:17

hailang1986 wrote:
右键单击"我的电脑",然后选"高级",再选"环境变量"
...
我的目录在"C:\Program Files\Java\j2re1.4.2_09\lib"
记得目录前面有".;",点和分号.

建議不要用"我的电脑","高级","环境变量"
也不必加入C:\Program Files\Java\j2re1.4.2_09\lib
在Command Prompt window內(可以用batch file[批次檔?])
SET CLASSPATH=.
就行了.

7.Re:菜鸟求救--Exception in thread "main" java.lang.NoClass.DeFoundError:Sushu [Re: wwdhks] Copy to clipboard
Posted by: hailang1986
Posted on: 2006-04-25 10:59

楼上的,能给出用
"我的电脑","高级","环境变量"
的缺点吗?谢谢了

8.Re:菜鸟求救--Exception in thread "main" java.lang.NoClass.DeFoundError:Sushu [Re: wwdhks] Copy to clipboard
Posted by: tomcatexpert
Posted on: 2006-04-25 14:44

command prompt 改classpath和path只有效于该窗口和你将使用的java application.

在电脑上设置对所有你Java程序的路径都会产生影响,不建议使用.

9.Re:菜鸟求救--Exception in thread "main" java.lang.NoClass.DeFoundError:Sushu [Re: wwdhks] Copy to clipboard
Posted by: lianqing_45
Posted on: 2006-04-28 17:40

我用的是j2sdk1.5.0+ultraEdit
环境变量好像也没有设置错误,就是按照论谈上提供 的方法设的,但是还是出现
No class Defound Error
想不通!1

10.Re:菜鸟求救--Exception in thread "main" java.lang.NoClass.DeFoundError:Sushu [Re: hailang1986] Copy to clipboard
Posted by: xatm092
Posted on: 2006-04-29 08:19

hailang1986 wrote:
楼上的,能给出用
"我的电脑","高级","环境变量"
的缺点吗?谢谢了

我学校机房的电脑里装了两个不同版本的java和其他很多乱七八糟的程序,

如果在"我的电脑","高级","环境变量"里设置好path调用1.5.0的javac,
运行时却总是调用1.4的javac.

但是直接在命令行里设置path之后就不会出问题.
为什么会这样我一直也没想通,高手指点一下?

11.Re:菜鸟求救--Exception in thread "main" java.lang.NoClass.DeFoundError:Sushu [Re: wwdhks] Copy to clipboard
Posted by: xatm092
Posted on: 2006-04-29 08:39

No class Defound Error还有很多可能原因啊,比如运行时把扩展名加上去了.
用了package定义包但是运行时没加上包名..(是不是这些都对大家来说属于太基本的东西了,汗....我才刚学起来,经常犯这种错.)

12.Re:菜鸟求救--Exception in thread "main" java.lang.NoClass.DeFoundError:Sushu [Re: wwdhks] Copy to clipboard
Posted by: sunjavaduke
Posted on: 2006-04-29 13:23

仔细
耐心弄弄就会好了的
最好设置一个JAVA_HOME
然后设置path和CLASSPATH(path一般系统直接就有,后者要自己创建)
CLASSPATH=;.%JAVA_HOME%\lib\tools.jar;JAVA_HOME%\lib\dt.jar;.
在开始--运行里面敲cmd
then
javac
如果出现帮助选项证明编译器正确再敲入
java
如果出现帮助选项,则证明解释器没错
这就应该可以执行了
如果还有错请检查是否是类名和保存文件名不一致,
或者文件保存成了txt,或者其他类型的文件
最后,看一下是否包含了main()方法,如果没有main()方法,是不能够直接运行的

13.Re:菜鸟求救--Exception in thread "main" java.lang.NoClass.DeFoundError:Sushu [Re: wwdhks] Copy to clipboard
Posted by: wwdhks
Posted on: 2006-04-29 19:41

sunjavaduke 说的好像有点道理,但是我就想不明白到底哪个是标准的方法,网上有很多种说法1、C:\Program Files\Java\jre1.5.0_06\lib 2、CLASSPATH=;.%JAVA_HOME%\lib\tools.jar;JAVA_HOME%\lib\dt.jar;.3.是C:\Program Files\Java\jre1.5.0_06\lib\ext 4、C:\Program Files\Java\jdk1.5.0_06\bin ,大家看看哪个是标准的,还有安装文件夹里面怎么有那么多lib文件夹阿?我看了好像内容都一样啊,它们到底有没有区别阿?

14.Re:菜鸟求救--Exception in thread "main" java.lang.NoClass.DeFoundError:Sushu [Re: wwdhks] Copy to clipboard
Posted by: why
Posted on: 2006-04-29 20:14

wwdhks wrote:
sunjavaduke 说的好像有点道理,但是我就想不明白到底哪个是标准的方法,网上有很多种说法1、C:\Program Files\Java\jre1.5.0_06\lib 2、CLASSPATH=;.%JAVA_HOME%\lib\tools.jar;JAVA_HOME%\lib\dt.jar;.3.是C:\Program Files\Java\jre1.5.0_06\lib\ext 4、C:\Program Files\Java\jdk1.5.0_06\bin ,大家看看哪个是标准的,还有安装文件夹里面怎么有那么多lib文件夹阿?我看了好像内容都一样啊,它们到底有没有区别阿?

4. is definitely not necessary
Usually only CLASSPATH=. would be good enough.

15.Re:菜鸟求救--Exception in thread "main" java.lang.NoClass.DeFoundError:Sushu [Re: wwdhks] Copy to clipboard
Posted by: xatm092
Posted on: 2006-04-29 22:33

我觉得classpath的设置问题很有趣,

也在网上查了点资料(感觉查过之后获益良多),
于是把这些整理了出来,
希望对大家也能有帮助

有不对的地方还请指正:

这个定义比较经典,我不翻译了,直接放上:
The CLASSPATH is an environment variable that tells the Java compiler javac.exe where to look for class files to import or java.exe where to find class files to interpret.

这里分析wwdhks给出的4种方法,

第一种:把classpath设成C:\Program Files\Java\jre1.5.0_06\lib 这种设法下,java会查找这个目录下的.class文件,但是,不会去用这个目录下的.jar文件.所以必须把所有用到的.class文件都放在这个文件夹里

第二种:CLASSPATH=;.%JAVA_HOME%\lib\tools.jar;JAVA_HOME%\lib\dt.jar;
这种设法其实java就是在
dt.jar和tools.jar这两个压缩文件内查你用到的.class文件.

第三种:这种其实不是设置classpath,单纯地使用这种方法使用时需要先把
你将会用到的所有的.jar文件拷贝到C:\Program Files\Java\jre1.5.0_06\lib\ext目录下.
JAVA在找用到的类时会把ext目录下和classpath里设置过的目录下所有可能用到的类都拿来,建立一张哈希表.再在这个哈希表里做查找.(最后没找到的话就会出NoClassDefFoundError)
关于这点:更详细的在这里http://www.ieee.org.cn/dispbbs.asp?boardID=49&ID=10258

第四种:把classpath设成C:\Program Files\Java\jdk1.5.0_06\bin 这种情况原理和第一种是一样的.唯一的不同就是找.class文件时的目录不同.

再总结一下:
以XP系统为例,命令行里设置classpath的一般格式:
set classpath =path1;path2;....................
后面的................表示可以跟更多的path.

当path是一个目录名时,java会查找此目录下所有.class文件
当path是一个jar文件的地址时,java会查找此jar里所有的.class文件
path的取值只能是上面两种情况选其一(好象.zip也可以?我不确定哎.).多个path间的分割符号依操作系统不同略有不同.
path中可以用英文的点"."表示当前目录

也可以把所有用到的jar文件放到ext文件夹下,而避免在classpath里设置jar文件的地址

16.Re:菜鸟求救--Exception in thread "main" java.lang.NoClass.DeFoundError:Sushu [Re: wwdhks] Copy to clipboard
Posted by: sunjavaduke
Posted on: 2006-04-30 10:53

呵呵
学到了些东西啊
不过我习惯设置JAVA_HOME
这样再安装服务器软件或者其他需要用到JAVA环境的软件就可以自动搜索配置了

17.请问 [Re: wwdhks] Copy to clipboard
Posted by: lianqing_45
Posted on: 2006-04-30 10:58

import java.awt.*;
import java.awt.event.*;
import javax.swing.ImageIcon;
class Event1 extends Frame implements ActionListener{
Button but1,but2;
Label lbl1;
public Event1(){
super("Event Example");
addWindowListener(new windowAdapter(){ //出错
public void windowClosing(WindowEvent e)
{System.exit(0);}});
initialize();
}
public void initialize(){
setSize(300,200);
this.setLayout(null);
but1=new Button("but1");
but1.setBounds(10,40,70,25);
but1.addActionListener(this);
add(but1);
but2=new Button("but2");
but2.setBounds(105,40,70,25);
but2.addActionListener(this);
add(but2);
lbl1=new Label("0",Label.CENTER);
lbl1.setBounds(75,70,70,25);
lbl1.setForeground(Color.blue);
add(lbl1);
setVisible(true);
}
public void actionPerformed(ActionEvent e){
if(e.getSoure()==but1){ //出错
int value=(new Integer(lbl1.getText())).intValue();
lbl1.setText(String.valueof(value+1)); //出错
}
else if(e.getSoure()==but2) //出错
lbl1.setText("0");
}
public static void main(String args[]){
new Event1();
}
}
编译时出现错误的地方已标出:
错误:cannot find symbol:
symbol: class windowAdapter
method getSoure
method valueof(init)
method getSoure

18.Re:菜鸟求救--Exception in thread "main" java.lang.NoClass.DeFoundError:Sushu [Re: wwdhks] Copy to clipboard
Posted by: sunjavaduke
Posted on: 2006-04-30 11:31

windowAdapter的W是不是应该大写啊
这是个匿名内类啊

19.Re:菜鸟求救--Exception in thread "main" java.lang.NoClass.DeFoundError:Sushu [Re: wwdhks] Copy to clipboard
Posted by: sunjavaduke
Posted on: 2006-04-30 11:33

method getSoure
method valueof(init)
method getSoure

getSource()
valueOf()
getSource()
如果你是自己在写程序,那么就多看看java API docs
如果你是从其他例子上敲程序
麻烦你看仔细一点

20.Re:菜鸟求救--Exception in thread "main" java.lang.NoClass.DeFoundError:Sushu [Re: wwdhks] Copy to clipboard
Posted by: lianqing_45
Posted on: 2006-04-30 12:58

谢谢指点!我正在看你推荐的东西!
有好的东西还请多推荐点!刚入门!

21.Re:菜鸟求救--Exception in thread "main" java.lang.NoClass.DeFoundError:Sushu [Re: wwdhks] Copy to clipboard
Posted by: zxmzxy
Posted on: 2006-04-30 17:52

我也出现过相同的情况,装了几次都没成功.最后还是按技术内幕上说的搞定.

建议用set path 环境变量.

22.Re:菜鸟求救--Exception in thread "main" java.lang.NoClass.DeFoundError:Sushu [Re: sunjavaduke] Copy to clipboard
Posted by: why
Posted on: 2006-04-30 19:19

sunjavaduke wrote:
CLASSPATH=;.%JAVA_HOME%\lib\tools.jar;JAVA_HOME%\lib\dt.jar;.

Sigh...
CLASSPATH=.;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar

Once again, tools.jar and dt.jar are not really necessary.


不妨认识一下 %JAVA_HOME%\lib 底下的 tools.jar 和 dt.jar 是甚么咚咚,需要不需要:
http://java.sun.com/j2se/1.4.2/docs/tooldocs/windows/jdkfiles.html
http://java.sun.com/j2se/1.5.0/docs/tooldocs/windows/jdkfiles.html

Jove wrote in http://www.cjsdn.net/post/view?bid=1&id=80536
jdk只会加载rt.jar
如果你的程序需要动态调用javac,就把tools.jar加上

23.Re:菜鸟求救--Exception in thread "main" java.lang.NoClass.DeFoundError:Sushu [Re: wwdhks] Copy to clipboard
Posted by: wwdhks
Posted on: 2006-05-04 22:18

WhY老大,你水平那么高,能不能指点一下我啊?我想作我徒弟,不知道可不可以?还有你能加我QQ吗 ?我对JAVA真的非常感兴趣和执著的。

24.Re:菜鸟求救--Exception in thread "main" java.lang.NoClass.DeFoundError:Sushu [Re: wwdhks] Copy to clipboard
Posted by: wwdhks
Posted on: 2006-05-04 22:18

忘记了,我的QQ是304329542。


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923