还是不行呀,我的出现了以下的问题: Exception in thread "main" java.lang.NoClassDefFoundError: helloworld (wrong nam e: HelloWorld) at java.lang.ClassLoader.defineClass0(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:486) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:11 1) at java.net.URLClassLoader.defineClass(URLClassLoader.java:248) at java.net.URLClassLoader.access$100(URLClassLoader.java:56) at java.net.URLClassLoader$1.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)怎么回事?请老大门帮忙!!!!
你可以试试把要引用的类各建一个目录,然后再把这些目录放在同一个目录下如:
package a.xx;
import a.yy.*;
......另一个文件
package a.yy;
import a.xx.*
在dos下运行set classpath=.;c:\jdk1.3\lib\dt.jar;c:\jdk1.3\lib\tools.jar
然后你可你用 set >> myset.txt把你的系统设置发到myset.txt文件中,
看看吧,它和w2k提供的窗口界面里的环境变量并不一定相同。
Exception in thread "main" java.lang.NoClassDefFoundError: helloworld (wrong nam
e: HelloWorld)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:486)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:11
1)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:248)
at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
at java.net.URLClassLoader$1.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 *.java即可
总之,你要不在classpath中配置你的类路径,要不直接进入类所属在目录进行编译.
试试
>Exception in thread "main" java.lang.NoClassDefFoundError: helloworld (wrong >name: HelloWorld)
^^^^^^^^^^^^^^^^^
大小写问题......
java -classpath . helloworld
或者把当前路径加到CLASSPATH(set CLASSPATH=.;其他的路径)里,然后跑到helloworld.class的目录下执行
java helloworld
c:\jdk1.3\dt.jar;c:\jdk1.3\tools.jar;c:\works;c:\works是你的工作目录,c:\works\xx是你的包的目录,
如果你的HelloWorld.java是xx包中的。在命令行执行时应加上包名,为:
java xx.HelloWorld
设完classpath后需重起或注销
???
我在win98的机器上把autoexec.bat中那个set classpath=...语句给删了,但程序照能编译运行!!
??
每次都要去set一次,才能运行,实在麻烦,还是我哪里漏了?
系统:win2k professionel jdk1.3.0;
我的环境变量classpath:
.;D:\Program Files\jdk1.3\lib\tools.jar;D:\Program Files\jdk1.3\lib\dt.jar注意,我的工作目录是d:\work\myjava,我把所有的java源文件都放在这儿。一开始,在这个目录下编了两个文件
//func.java:
package fym;
import java.io.*;class func{
...
}//HelloWorld.java:
import fym.*;
class HelloWorld{
...
func myf=new func();
...
}编译时出现:
-------------------------------------
D:\work\myjava>javac HelloWorld.java
HelloWorld.java:2: 包 fym 不存在
import fym.*;
^
HelloWorld.java:7: 不能解析符号
符号:构造方法 func ()
位置:类 in func
func myf=new func();
^
HelloWorld.java:8: 不能解析符号
符号:方法 main (java.lang.String[])
位置:类 in func
myf.main(ss);
^
3 个错误
*****************************************
我在HelloWorld.java中改为 import fym.func;
然后出现:
--------------------------------------
D:\work\myjava>javac HelloWorld.java
HelloWorld.java:2: 不能解析符号
符号:类 func
位置:包 in fym
import fym.func;
^
HelloWorld.java:7: 不能解析符号
符号:构造方法 func ()
位置:类 in func
func myf=new func();
^
HelloWorld.java:8: 不能解析符号
符号:方法 main (java.lang.String[])
位置:类 in func
myf.main(ss);
^
3 个错误
****************************************然后,我听从人家的建议,在d:\work\myjava下建了一个名为fym的子目录,HelloWorld.java和func.java都放进去,然后再在classpath中加上“d:\work\myjava”,HelloWorld.java中仍使用import fym.func; 然后再编译运行,成功了!!??????????????这一步是为什么啊,我实在不能理解,是不是一定要搞一个子目录和自已的包名一样啊?
接着,我试着把import语句改为:import fym.*; 则出现下面的情况:
----------------------------------------
D:\work\myjava\fym>javac HelloWorld.java
HelloWorld.java:7: 不能访问func
坏的类文件:.\func.class
类文件含有错误的类:fym.func
请去掉或确信它出现在正确的classpath的子目录中.
func myf=new func();
^
1 个错误
********************************************
????????????为什么会出现上面的信息呢?我删掉了上次编译好的func.class,然后出现下面的情况:
----------------------------------------------
D:\work\myjava\fym>javac HelloWorld.java
HelloWorld.java:7: 不能解析符号
符号:构造方法 func ()
位置:类 in func
func myf=new func();
^
HelloWorld.java:8: 不能解析符号
符号:方法 main (java.lang.String[])
位置:类 in func
myf.main(ss);
^
2 个错误
**************************************************?????我的包名是fym,包里有func类,那么我为什么不能用import fym.*;来引用这个类呢????还有,我不明白为什么一定要在classpath中加上d\work\myjava,难道那个"."不就是代表当前目录吗?
我试着把它去掉结果又是“包不存在”。
这个文件在一个名称为fym的文件夹中
我建议你找一本比较好的java书,thinking in java或java核心技术系列都可以。仔细的看一遍。同时多查查帮助。因为比较系统的基础知识是很重要的。毕竟在坛子里得到的东西比较散乱。