我可以用Eclipse製作一個可執行的jar文件。假設它叫做ast.jar
,而Main類是ASTExplorer。我可以驗證這是否適用於java -jar ast.jar
。eclipse後面的魔法生成可執行jar文件
然後,我將jar文件解壓到一個單獨的目錄中,並驗證ASTExplorer是否在astexplorer目錄中。但是當我執行這個命令java -cp . astexplorer.ASTExplorer
我得到這個錯誤。
java -cp . astexplorer/ASTExplorer
Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/swt/widgets/Composite
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
問題是jar文件中沒有org/eclipse/swt目錄。
什麼是可執行的JAR文件背後的魔力?解壓縮時爲什麼不運行?
你應該嘗試用螞蟻創造你的JAR,而不是蝕食黑魔法。 –
你是什麼類路徑,當你運行'Java的罐子ast.jar'。當你解壓jar文件時,你的類路徑是'.'。我猜測有一個環境變量CLASSPATH設置爲允許'java -jar ast.jar'工作。 – km1