个人知识管理站

分享个人生活、工作、学习过程中各种所学、所见、所闻,有趣的、好玩的、技术积累等各方面的内容。

您尚未登录。

公告

不积跬步无以至千里,不积小流无以成江海,网址:www.itecfun.com

#1 2015-06-03 16:43:53

xuyg
管理员
注册时间: 2015-01-21
帖子: 667

为什么执行JAVA程序时,会出现Exception in thread"main" java.lang.NoClassDefFoundErr

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

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。

明白了吗?一直我也想不出还会有什么理由造成这个出错信息了!如果有哪位兄弟想到了就补充一下吧!

其实如果你使用了一些比较好的编程工具的话,根本就没有机会碰到这个错误的

6.import 了你的包名了吗?

需要说明的是这种方法完全可以解决标题的问题,而其中的CLASSPATH的设置后,回覆盖你原来的设置,即变成了classpath=%classpath%;d:\class   我了解到CLASSPATH实际上是一个类的目录,而之所以编译正确而无法运行是因为,没有找到你的CLASS类所在的位置,一般我们编译好一个源程序后,会在本目录下出现一个类文件,那么我们直接把CLASSPATH设置在你新建的源程序的目录下就可以了,例如你在D盘中建了一个专门放自己编的源程序的文件夹D:\JAVA 那么在DOS命令提示符中运行JAVA程序时就不会有报错了.一般我们用高级开发工具(如JCeartor)就不会出现这种报错情况.

补充:

package com.pera.test;

public class App {

    /**

     * @param args

     */

    public static void main(String[] args) {

       // TODO Auto-generated method stub

       System.out.print("Hello Newapp");

    }

}

程序如上:

假设App.java存放在D盘根目录

编译:

打开cmd,进入D盘根目录,

1. 使用Javac App.java 进行编译,默认会在D盘根目录生成App.class文件。

2. 使用javac App.java –d \ 则会在D盘根目录bin目录按照App类的包结构生成目录结构及App.class

D:

--com

--pera

    --test

      --App.class

执行:

将D盘根目录(要执行类的根目录)加入环境变量 CLASSPATH中。

1.    第一种编译方式时,执行 java java com.pera.test.App会抛出异常: Exception in thread "main" java.lang.NoClassDefFoundError

解决办法:D盘根目录新建目录com/pera/test,将App.class剪切至。

2.运行 java com.pera.test.App,提示执行成功!

离线

页脚

©2019 YG Wang 备案号: 赣ICP备19010196号-1