簡體   English   中英

Jar 文件引用 Maven jar 文件不能始終如一地工作

[英]Jar file referencing Maven jar file doesn't work consistently

我有一個 Swing 應用程序,它使用 Maven 工件math.geom2d:javaGeom:0.11.1中的類。 To create a jar file in A GitHub Release I use a modified "fatJar" build.gradle task, so the geom2d classes are included in the jar file. 對於我在 Maven 上的應用程序的 jar 文件,我不包括 geom2d 類,因此這些類不會出現在 jar 文件中,但它們被引用為依賴項

奇怪的是,在我的機器上,這個(較小的)jar 文件始終可以正常工作,所以我認為一切都很好,即使很奇怪。 我決定在我妻子的機器上試一試,結果它因 NoClassDefFoundError 而崩潰。 我想可能是因為她沒有安裝 Maven..,嘗試安裝它,但沒有區別! 幫助將不勝感激!

這是我的應用程序的 Maven 上的 pom.xml :

<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.jpaulmorrison</groupId>
<artifactId>drawfbp</artifactId>
<version>2.18.4</version>
<name>DrawFBP</name>
<description>Diagramming Tool for Flow-Based Programming</description>
<url>https://github.com/jpaulm/drawfbp</url>
<licenses>
<license>
<name>GNU Lesser General Public License, Version 3.0</name>
<url>https://www.gnu.org/licenses/lgpl-3.0.txt</url>
</license>
</licenses>
<developers>
<developer>
<id>jpaulmorr</id>
<name>
John Paul Rodker Morrison (Software architect/developer)
</name>
<email>jpaulmorr@gmail.com</email>
</developer>
<developer>
<id>bobcorrick</id>
<name>Bob Corrick (Software architect/developer)</name>
<email>bobcorrick@outlook.com</email>
</developer>
</developers>
<scm>
<connection>scm:git:https://github.com/jpaulm.git</connection>
<developerConnection>scm:git:https://github.com/jpaulm.git</developerConnection>
<url>https://github.com/jpaulm.git</url>
</scm>
<dependencies>
<dependency>
<groupId>math.geom2d</groupId>
<artifactId>javaGeom</artifactId>
<version>0.11.1</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>

謝謝@samvel1024:我現在可以更好地處理正在發生的事情:

  • 沒有 geom2d 類的 jar 文件可以運行,因為我的類路徑中有 geom2d - 它不再存在了!

  • 我使用 build.gradle 中的任務創建了一個 fatJar,但是 uploadArchives 創建了一個新的 jar 文件,它不是“胖”!

  • 所以,我想將 fatJar 任務添加到我的uploadArchives function,

或者

  • 抑制 uploadArchives 中的“jar”任務,因此它不會弄亂我已經擁有的“胖”jar。 我試過“jar,enabled = boolean 變量”。 但我不能將其設置為“假”...

這兩個選項中的任何一個都應該在合理的語言中很容易,但我不能讓任何一個工作! 幫助將不勝感激!

如果您打算使用 maven 來構建 jar,那么您需要像在 gradle 構建定義中一樣包含所有依賴項。

如果您希望 jar 可以使用java -jar my.jar運行,那么您還需要使用一些構建插件來為您執行此操作。

您可以在此處找到更多詳細信息

原來如此簡單:原來是上面的第二個選項:

“......在uploadArchives中抑制'jar'任務,所以它不會弄亂我已經擁有的“胖”jar......”

-x jar添加到用於上傳存檔的命令行!

無論如何,謝謝@samvel1024!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM