嘿所以我一直在研究一個項目,我希望能夠從命令行作爲可執行jar運行。我已經能夠使用Mavens assembly:single命令創建具有依賴關係的jar。我的pom看起來像這樣。運行帶有依賴項的可執行jar的問題
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.3</version>
<configuration>
<archive>
<manifest>
<mainClass>org.openmetadata.main.OmadUpdate</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
</plugins>
</build>
構建成功,並創建罐子omad更新-0.0.1-SNAPSHOT-JAR-與-dependencies.jar。我去我的項目目標文件夾中的命令行,然後鍵入
java -jar omad-update-0.0.1-SNAPSHOT-jar-with-dependencies.jar
我也曾嘗試
java -cp omad-update-0.0.1-SNAPSHOT-jar-with-dependencies.jar org.openmetadata.main.OmadUpdate
不幸的是,我給一個java.lang.NoClassDefFoundError每種情況:組織/ openmetadata /主/ OmadUpdate。我很困惑,因爲我知道我的主類是在包org.openmetadata.main中,但它沒有找到。我覺得這特別令人困惑,因爲在我的朋友中,我將這個班級指定爲我的班級。我已經嘗試將主類的名稱更改爲src.main.java.org.openmetadata.main.OmadUpdate,並簡單地更改OmadUpdate,但似乎都沒有效果。感謝您提前提供任何幫助。
但根據此頁[鏈接](http://maven.apache.org/plugins/maven-assembly-plugin/usage.html#aResources)它似乎沒有,我必須指定一個類路徑,它似乎是它會根據需要簡單地打包Maven依賴項。儘管如此,我認爲我可能會犯錯。 – decal 2012-03-28 20:23:02
打開您的jar文件並在META-INF目錄中查找MANIFEST.MF文件。是否指定了類路徑? – Mike 2012-03-28 20:25:37
好吧,我在Mavens [網站](http://maven.apache.org/shared/maven-archiver/examples/classpath.html#aMake)上發現,將 true addClasspath>添加到我的pom.xml應該照顧classpath,但是當我嘗試運行可執行jar時,仍然遇到我的Main類無法找到的問題。 –
decal
2012-03-30 14:43:59