我試圖從命令promopt樣本Java應用程序,但我發現了以下錯誤:「找不到主類」
Exception in thread "main" java.lang.NoClassDefFoundError: com/badlogic/gdx/helloworld/HelloWorldDesktop
Caused by: java.lang.ClassNotFoundException: com.badlogic.gdx.helloworld.HelloWorldDesktop
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:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Could not find the main class: com.badlogic.gdx.helloworld.HelloWorldDesktop. Program will exit.
我使用嘗試的命令和運行這個程序是:
java -cp .;gdx.jar;gdx-backend-jogl.jar com.badlogic.gdx.helloworld.HelloWorldDesktop
所有相關文件都在當前工作目錄(的.java,的.class和.jar文件)
我用來建立.class文件的命令如下(有2個.java文件):
javac -cp gdx.jar;gdx-backend-jogl.jar HelloWorld.java HelloWorldDesktop.java
再次,這是從同一個工作目錄下運行 - 的HelloWorldDesktop.java
內容是(或多或少):
package com.badlogic.gdx.helloworld;
public class HelloWorldDesktop {
public static void main (String[] argv) {
// Application
}
}
我試圖學習Java作爲一個C#開發人員,所以當我在編程概念方面有很強的背景時,整個java工具鏈目前完全讓我困惑。異常表明找不到類HelloWorldDesktop
,但據我所知,我已經得到了正確的名稱,並且將正確的.jar文件添加到了類路徑中,因此Java應該能夠加載類。
爲什麼找不到HelloWorldDesktop
?
感謝的 - 無論是使用'-D .'用'javac'引起我的(未修改的)命令的工作 - 從一個更高的目錄中變更路徑運行也工作。我想知道爲什麼示例源代碼嵌套得如此之深,我從未想到源代碼的目錄結構足夠重要,無法執行。 – Justin
嗯,我只是指出'-d .'讓編譯器爲你創建了一系列的子目錄。 – Justin