簡體   English   中英

類聲明錯誤(由ClassNotFoundException引起的NoClassDefFoundError)

[英]Class declaration bug (NoClassDefFoundError caused by ClassNotFoundException)

請告訴我這個班級宣言有什么問題:

ExchEngine.java

package engine;

public class ExchEngine {

    public ExchEngine() {
    }

    public static void main(String[] args) {

        ExchEngine engine = new ExchEngine();

    }
}

當我編譯這個文件時,我總是得到異常:

java.lang.NoClassDefFoundError: test_engine/ExchEngine
Caused by: java.lang.ClassNotFoundException: test_engine.ExchEngine
 at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
 at java.security.AccessController.doPrivileged(Native Method)
 at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
 at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
Exception in thread "main"

ExchEngine.java在包中並且無法自行運行,這似乎很奇怪。 謝謝你的幫助。

您應該將源文件放在名為“engine”的目錄中,因為這是給它的包名。

使用javac engine/ExchEngine.java編譯該文件,並使用java engine.ExchEngine運行它。

你的班級是engine.ExchEngine 某處某處正在尋找test_engine.ExchEngine ,並且當它無法執行此操作時會導致此錯誤。 你可能需要更改這兩個以便它們匹配。

這不是編譯時問題,而是運行時錯誤。

需要更多信息。 例如,你是如何嘗試運行它的? 在Eclipse中?

如果在Eclipse中:您可能需要清理項目。 或者您可能在更改包之前嘗試舊的運行配置。

運行應用程序時指定類路徑

假設編譯后,您具有以下目錄結構:

./test_engine/ExchEngine.class

然后像這樣運行它:

java -cp . test_engine.ExchEngine

如果您使用IDE,請重新配置項目,主要是查找Main方法的位置。 清潔,重建,重啟,做你需要做的事情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM