我有一個使用Maven「quickstart」模板構建的java項目。該結構看起來像Maven:使用命令行運行java類文件
src
main
java
myapp
HelloWorld.java
的HelloWorld.java被宣佈爲下包 「的myapp」
內的pom.xml,只有JUnit是包括在內。
現在,當我運行Maven編譯,我得到
target
classes
myapp
HelloWorld.class
但在我的CD下一個類文件到目標/班/ MyApp的,做
java -cp . HelloWorld
我得到的NoClassDefFoundError,我根據How to execute a java .class from the command line
我試圖
java -cp . myapp.HelloWorld (myapp is the package)
做到了
我仍然得到「無法找到或加載主類」
我的問題是:「-cp」我設置使用類路徑,那麼爲什麼還是不能運行的類?它與Maven有什麼關係?
我知道我不需要使用命令行,我只是好奇。
我假設你需要指定包的名稱 - 即去target/classes並運行java -cp。 myapp.HelloWorld' – stdunbar
@PetterFriberg,我讀到了所有這些問題,但解決方案對我來說不起作用,這就是爲什麼我會問這個問題,並且我知道這個問題有很大的變化。我只希望有人花3分鐘時間來重現它,我對這個似乎很簡單的問題感到非常沮喪。 – user2628641
問題就像在鏈接問題中:你需要小心包裝聲明。 'HelloWorld'是'myapp'包下的一個類。所以要運行它,你必須不**把'cd'變成'myapp'。你應該把'cd'到這裏的'target/classes'的根文件夾並調用'java myapp \ HelloWorld'。也就是說,最好讓你的項目(Maven在'target下默認創建的)創建一個JAR,'cd'給basedir並用'java -jar target \ name-of- jar.jar' – Tunaki