简体   繁体   English

运行时java.lang.NoClassDefFoundError:需要类不在类路径上

[英]java.lang.NoClassDefFoundError at Runtime: Need Class not on Classpath

I have tried several approaches as suggested on this website as well as several others to no avail. 我尝试了本网站上建议的几种方法,但也没有尝试其他几种方法。

-Running Angstrom embedded Linux, OpenJDK6, Shark VM. -运行Angstrom嵌入式Linux,OpenJDK6,Shark VM。

File Structure 档案结构

All .java and .jar files are stored in directory ./src 所有.java和.jar文件都存储在目录./src中

  • jarfiles: j1.jar j2.jar jarfiles:j1.jar j2.jar

  • Source code: Coder.java, WrapperClass.java 源代码:Coder.java,WrapperClass.java

Compiling and Running 编译并运行

  • javac -cp j1.jar:j2.jar Coder.java WrapperClass.java javac -cp j1.jar:j2.jar Coder.java WrapperClass.java
  • Successfully compiles, outputs Coder.class, WrapperClass.class, as well as several other files including Coder$1.class through Coder$6.class, as well as Coder$Main_thread.class and Coder$Progress_Bar_Thread.class, any insight onto what all these .class files are for? 成功编译,输出Coder.class,WrapperClass.class以及其他几个文件,包括通过Coder $ 6.class编写的Coder $ 1.class以及Coder $ Main_thread.class和Coder $ Progress_Bar_Thread.class,可了解所有这些内容.class文件用于?

  • Run attempts all terminate in java.lang.ClassNotFoundException. 运行尝试均终止于java.lang.ClassNotFoundException。

    • ~/coder/src: java Package.Coder 〜/ coder / src:java Package.Coder
    • ~/coder/src: java -cp jar1.jar:jar2.jar Package.Coder 〜/ coder / src:java -cp jar1.jar:jar2.jar Package.Coder
    • ~/coder: java ./src/Package.Coder 〜/编码器:java ./src/Package.Coder
    • ~/coder: java -cp jar1.jar:jar2.jar ./src/Package.Coder 〜/编码器:java -cp jar1.jar:jar2.jar ./src/Package.Coder

Thank you very much for your help. 非常感谢您的帮助。 I have run this on NetBeans and can verify that it's functional code, just a matter of getting it to run on Linux. 我已经在NetBeans上运行了它,并且可以验证它的功能代码,仅是使其在Linux上运行即可。

Stacktrace is: Stacktrace是:

Exception in thread "main" java.lang.NoClassDefFoundError: Package/Coder Caused by: java.lang.ClassNotFoundException: Package.Coder 线程“主”中的异常java.lang.NoClassDefFoundError:程序包/编码器原因:java.lang.ClassNotFoundException:Package.Coder

at java.net.URLClassLoader$1.run(URLClassLoader.java:217) 在java.net.URLClassLoader $ 1.run(URLClassLoader.java:217)

at java.security.AccessController.doPrivileged(Native Method) 在java.security.AccessController.doPrivileged(本机方法)

at java.net.URLClassLoader.findClass(URLClassLoader.java:321) 在java.net.URLClassLoader.findClass(URLClassLoader.java:321)

at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) 在sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:294)

at java.lang.ClassLoader.loadClass(ClassLoader.java:266) 在java.lang.ClassLoader.loadClass(ClassLoader.java:266)

at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:334) 在java.lang.ClassLoader.loadClassInternal(ClassLoader.java:334)

Could not find the main class: Package.Coder. 找不到主类:Package.Coder。 Program will exit 程序将会退出

Assuming this structure 假设这种结构

/coder
    /src
        /Package
            /Coder.java
            /WrapperClass.java
        /j1.jar
        /j2.jar

You will need to compile from /src as 您将需要从/src编译为

javac -cp j1.jar:j2.jar Package/Coder.java Package/WrapperClass.java

This will create .class files in /Package . 这将在/Package创建.class文件。 You can then run it, again from /src as 然后,您可以再次从/src运行它

java -cp j1.jar:j2.jar Package.Coder

assuming the Coder class has a main method which is your entry point. 假设Coder类具有main方法,这就是您的入口点。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM