错误"/>
NotClassDefFoundError的错误
1、问题原因:
这个问题的原因是内部类的class文件没找到
所以才会出现NoClassDefFoundError(运行时类找不到)
记录下我为什么出现这个错误:
使用idea编译java文件,万万没想到idea竟然是不会生成内部类的class的,但是idea只生成的主类class在idea上运行是没有错误的,将idea编程生成的主类class单独到到了控制台运行,当一但调用关于内部类的代码时就会报NoClassDefFoundError,这一度让我以为我找到了jdk的bug,人傻了都。
2、问题解决:
若是涉及内部类的java程序,需要在控制台运行其class文件,
就需要也在控制台利用原始jvm编译器编译,
这样就会生成主类的class和内部类的class**。
一般内部类的class文件名字都是主类名$内部类的名字,匿名内部类class文件名字时主类名$1。
- 示例:
1、ThreadTest .java (匿名内部类)
public class ThreadTest {public static void main(String[] args) {Thread thread1 = new Thread(new Runnable() {public void run() {System.out.println("爬爬");}});thread1.start();}
}
2、控制台编译
javac -encoding UTF-8 ThreadTest.java
会生成两个class
3、运行
java ThreadTest
执行成功!!!
额外的,若是希望文件夹下不要主类内部类等等过多的问价,可以对主类和内部类打包成jar,打包成jar的方法可以参考如下:
class打包jar实用教程
更多推荐
NotClassDefFoundError的错误
发布评论