亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

maven依賴沒有添加到eclipse中的jar

maven依賴沒有添加到eclipse中的jar

繁花不似錦 2022-01-12 10:01:29
我正在使用 java 11 下的 eclipse 2018.09 編寫一個 maven 項目,但我在創建 maven jar 時遇到了問題。當我清理項目包時,它為我提供了一個 jar,但沒有添加任何依賴項,我有時會在 eclipse 中收到警告,例如:類路徑條目 junit(例如)將不會被導出,它可能會導致 ClassNotFoundException。這實際上是我啟動 jar 項目時發生的事情。
查看完整描述

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”,但我建議您不要首先針對此解決方案。


查看完整回答
反對 回復 2022-01-12
?
喵喵時光機

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


查看完整回答
反對 回復 2022-01-12
  • 2 回答
  • 0 關注
  • 268 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號