java命令不能运行class文件

来源:互联网 发布:不要网络的大型游戏 编辑:程序博客网 时间:2024/05/20 07:50

java命令不能运行class文件

我已经配置好了环境变量了,javac编译能成功,生成class文件后用java命令运行的时候出错
Exception in thread "main" java.lang.NoClassDefFoundError: demo/class
Caused by: java.lang.ClassNotFoundException: demo.class
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
Could not find the main class: demo.class. Program will exit.

这是什么原因,连最简单的HelloWorld程序都无法运行
求高人解答
收起
cs0346 | 浏览 9426 次 |举报
我有更好的答案
推荐于2017-11-23 15:22:29最佳答案
应该这样检查你的环境和你的操作: 

1、你的文件名对吗?
JAVA要求你的文件和你的类名严格对应的。
比如 public class HelloWorld{ .....
那么文件名一定只能是HelloWorld.java,看仔细了!

2、你的程序中有main方法吗?参数什么的对吗?
main方法的声明应该是这样子的:
public static void main(String[] args)
事实上如果你用开发工具来做的话,是不会错的。如果你用UltraEdit之类的来写程序的话,就一个字不要改的照抄吧!

3、记住,javac后面跟的参数是文件名,但java 后面跟的是类名!
这是我开始学JAVA是犯的错,java HelloWorld.class,然后就报错。后来才弄明白,应该是java HelloWorld。

4、设置了classpath了吗?
不仅是在安装JDK时要设置的内容,一般来说最好还要自己设置一个目录来存放自己的类文件的。比如d:\class目录。
设置classpath=%classpath%;d:\class
那么,现在将HelloWorld.class文件COPY到d:\class目录下,再java HelloWorld应该就OK了。

5、结合第3点和第4点
如果你的类是属于某一个包的,比如这样一个类sony.test.HelloWorld,那么按照我在第4点中说的目录来说,就应该将HelloWorld.class文件存放到d:\class\sony\test\目录下。
执行的时候应该参考第3点中说的,按类名执行:java sony.test.HelloWorld。

明白了吗?一直我也想不出还会有什么理由造成这个出错信息了!如果有哪位兄弟想到了就补充一下吧!
其实如果你使用了一些比较好的编程工具的话,根本就没有机会碰到这个错误的,至少我在使用了VisualAge for Java之后,就没有这样的事情了。

好啦,不说了,祝同志们好运吧!
过了这第一道门,后面的就比较简单啦!
发布评论

kin693 

采纳率:28% 擅长: JAVA相关 数据库DB

其他回答

这个很简单,是因为你的java文件名和类名不一样,举个例子,你建个一个类,Class A {} 但是你文件名是B,当你执行javac时,生成的class文件是A.calss,而不是B.class,当你编译时javac B.java 但执行时要这样;java A.
知道了吗?以后创建类的时候要保证文件名和类名的一致啊!!!
skywancen  | 发布于2010-08-09 21:42
举报| 评论 
1 0
java 类名就是了

java demo不用加.calss
Jseven_jy  | 发布于2010-08-09 21:39
举报| 评论 
0 0
如果你的Java源程序是带“包(package)”,你编译时要使用:“javac -d . HelloWorld.java”,运行时也要带“包”运行,如:“java 包名.类名”,估计你可能没有带“包”编译或没有带“包”运行。。。。,还有就是运行时只写类名,不要加“.class”。
dljianggk  | 发布于2010-08-09 22:15

阅读全文
0 0
原创粉丝点击