【发布时间】:2013-09-26 22:48:00
【问题描述】:
我已经尝试了该网站上建议的几种方法以及其他几种方法,但均无济于事。
-运行 Angstrom 嵌入式 Linux、OpenJDK6、Shark VM。
文件结构
所有 .java 和 .jar 文件都存储在目录 ./src 中
jar 文件:j1.jar j2.jar
源码:Coder.java、WrapperClass.java
编译运行
- javac -cp j1.jar:j2.jar Coder.java WrapperClass.java
成功编译,输出Coder.class、WrapperClass.class以及其他几个文件包括Coder$1.class到Coder$6.class,还有Coder$Main_thread.class和Coder$Progress_Bar_Thread.class,对所有这些 .class 文件的用途有任何见解吗?
-
运行尝试都以 java.lang.ClassNotFoundException 终止。
- ~/coder/src: java Package.Coder
- ~/coder/src: java -cp jar1.jar:jar2.jar Package.Coder
- ~/coder: java ./src/Package.Coder
- ~/coder: java -cp jar1.jar:jar2.jar ./src/Package.Coder
非常感谢您的帮助。我已经在 NetBeans 上运行了它,并且可以验证它的功能代码,只需让它在 Linux 上运行即可。
堆栈跟踪是:
线程“main”中的异常 java.lang.NoClassDefFoundError: Package/Coder Caused by: java.lang.ClassNotFoundException: Package.Coder
在 java.net.URLClassLoader$1.run(URLClassLoader.java:217)
在 java.security.AccessController.doPrivileged(Native Method)
在 java.net.URLClassLoader.findClass(URLClassLoader.java:321)
在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
在 java.lang.ClassLoader.loadClass(ClassLoader.java:266)
在 java.lang.ClassLoader.loadClassInternal(ClassLoader.java:334)
找不到主类:Package.Coder。程序将退出
【问题讨论】:
-
提供有关 excption 的完整详细信息。 1.是
ClassNotFoundException还是NoClassDefFoundError?这不是无关紧要的。 2. 究竟是哪个类没有找到? -
旁注:1.您显然是在根(默认)包中定义您的类。仅此一项就不是一个好主意,可能会导致问题。 2. 您误用源目录作为保存 jar 的地方。 3. 为编译的类使用单独的目标目录会更好。
-
您尝试运行
Package.Coder类,但没有证据表明Package是一个包,因为那时源文件需要位于Package子目录中。但是,切勿在包名称中使用大写字母。 -
线程“主”java.lang.NoClassDefFoundError 中的异常,原因是:java.lang.ClassNotFoundException。此外,它实际上位于 ~/Desktop/Coder/src。
-
NoClassDefFoundError总是由底层ClassNotFoundException引起,但它与诊断更相关。您仍未提供有关错误的完整信息。
标签: java jar classpath classnotfoundexception