A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 丁绍然 中级黑马   /  2014-5-29 15:36  /  1518 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

C:\Users\DSR>javac Test1.java

C:\Users\DSR>java Test1
Exception in thread "main" java.lang.NoClassDefFoundError: Test1 (wrong name: co
m/itheima/Test1)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:14
1)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
        at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Could not find the main class: Test1.  Program will exit.

5 个回复

倒序浏览
错误是告诉你,找不到.class文件
你的程序没问题,可能是因为你环境变量的设置有问题
我告诉你我的,你对照修改一下,如果不是这个原因,你在想别的办法。不过最可能的就是环境变量配置有问题。
你需要检查下你的java_home 和classpaht之类的东西看看吧
环境变量如果设置正确,你的程序肯定能运行,如果不配置环境变量,那么把你的JAVA文件复制到bin目录下去编译,然后运行,如果还不行,那你就要重装JDK了!
我的方法你都弄一下,如果不行你踩我!!!!
补充:classpath他的路径前必须有 点 和 分号   .;  就是这个!!
新补充:能帮到你真的很高兴!
对不起,确实是dt不是jt,是我打错了!
但运行程序没关系的!但还是写正确的好,要不怕有麻烦,呵呵,谢谢peizhengfen!
还有回答一下楼主的问题
classpath是用来使编译程序能找到用户定义类和系统类所在的包,需要将用户类所在的目录和系统类所在的包放入环境变量中,路径中的点“.”就表示当前用户类所在的目录(当前目录)而确定dt.jar和tools.jar就是指定系统类!只有写全了才能实现classpath的功能!不过说句实在话,到目前为止,我还没看到过哪本书上环境变量向你说的那样配置,真的,如果有,也肯定不是JDK1.4.2,也许版本比他高吧!不过你记住了,这么配置对你以后应用集成开发软件有好处,他能很方便的找到你的JDK,加快了程序的运行效率!

点评

同学 回答问题尽量用自己的话回答  发表于 2014-5-29 15:41
回复 使用道具 举报
就是说类加载器加载不了,或者,你把java.awt.关掉看看

应该这样检查你的环境和你的操作:

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之后,就没有这样的事情了。

回复 使用道具 举报
之前切换过一次workspace,现在有换回来了。用eclipse能运行了,但是用cmd还是找不到主类啊
回复 使用道具 举报
对 就是这样   求采纳我
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马