2 回答

TA貢獻1796條經驗 獲得超10個贊
它為我提供了一個 jar,但沒有將依賴項添加到 [it]
這是完全正常的。默認情況下,Maven 構建 jar 時,不會在其中添加任何依賴項,而只會添加您當前項目的 .class 和資源。
當您運行程序時,您希望它找到您的依賴項,否則您將面臨 ClassNotFoundException。因此,您必須配置類路徑以引用依賴項。
1-如果您想使用 Maven 從本地計算機運行程序,請使用 exec Maven 插件,并<java>
在您的 pom 中定義目標,如下所述:https : //www.mojohaus.org/exec-maven-plugin/usage。 html#Java_goal
或者,您可以從 IDE 中的啟動器運行它。IDE 將為您構建類路徑,并且類路徑將正確包含您的依賴項。
2-如果您想在任何計算機上從命令行運行,則必須將所有依賴項復制到一個目錄中(使用 Maven 的依賴項插件mvn dependency:copy
)并像這樣運行您的 jar:
java -cp myProgram.jar:dependencyDirectory/* com.blabla.MainClass
(注意使用 ';' 或 ':' 和 '/' 或 '\' 取決于 Linux/Windows)
3-作為替代方案,您可以使用 java -jar myprogram.jar 運行您的 jar,但前提是它包含正確的 MANIFEST.MF,其中所有依賴項的位置都是硬編碼的。
我的建議是首先針對解決方案 1 或 2。
PS:您還可以創建包含您的依賴項的“fat jars”或“uber jars”,但我建議您不要首先針對此解決方案。

TA貢獻1846條經驗 獲得超7個贊
您可以簡單地將其添加到您的 pom.xml(在 <plugins> 標簽下):
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>App</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
請記住將主類更改為您的入口點(是哪個類static void main(string[args]))?,F在,當您運行命令mvn clean install時,targets文件夾中將有一個名稱為 jaryourproject-version-SNAPSHOT-jar-with-dependencies.jar
添加回答
舉報