Java 引用Maven Jar文件的Jar文件不';我不能始终如一地工作

Java 引用Maven Jar文件的Jar文件不';我不能始终如一地工作,java,git,maven,jar,Java,Git,Maven,Jar,我有一个Swing应用程序,它使用Maven artifactmath.geom2d:javaGeom:0.11.1中的类。为了在GitHub版本中创建jar文件,我使用了一个修改过的“fatJar”build.gradle任务,因此geom2d类包含在jar文件中。对于Maven上我的应用程序的jar文件,我没有包含geom2d类,因此这些类不会显示在jar文件中,但它们作为依赖项引用 奇怪的是,在我的机器上,这个(较小的)jar文件始终运行良好,所以我认为一切都正常,即使很奇怪!我决定在我妻

我有一个Swing应用程序,它使用Maven artifact
math.geom2d:javaGeom:0.11.1
中的类。为了在GitHub版本中创建jar文件,我使用了一个修改过的“fatJar”build.gradle任务,因此geom2d类包含在jar文件中。对于Maven上我的应用程序的jar文件,我没有包含geom2d类,因此这些类不会显示在jar文件中,但它们作为依赖项引用

奇怪的是,在我的机器上,这个(较小的)jar文件始终运行良好,所以我认为一切都正常,即使很奇怪!我决定在我妻子的机器上试用,结果它出现了一个NoClassDefFound错误。我想可能是因为她没有安装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>


4.0.0
com.jpaulmorrison
drawfbp
2.18.4
DrawFBP
基于流编程的图解工具
https://github.com/jpaulm/drawfbp
GNU Lesser通用公共许可证,3.0版
https://www.gnu.org/licenses/lgpl-3.0.txt
保罗莫尔酒店
John Paul Rodker Morrison(软件架构师/开发人员)
jpaulmorr@gmail.com
山猫
Bob Corrick(软件架构师/开发人员)
bobcorrick@outlook.com
scm:git:https://github.com/jpaulm.git
scm:git:https://github.com/jpaulm.git
https://github.com/jpaulm.git
数学.geom2d
爪哇几何
0.11.1
编译
谢谢@samvel1024!我现在对正在发生的事情有了更好的理解:

  • 没有geom2d类的jar文件可以运行,因为我的类路径中有geom2d——它不再有了

  • 我使用build.gradle中的任务创建了一个fatJar,但是uploadArchives创建了一个新的jar文件,它不是“fat”

  • 因此,我想将fatJar任务添加到我的uploadArchives函数中

  • 在uploadArchives中抑制'jar'任务,这样就不会弄乱我已经有的“胖”jar了!我尝试过“jar.enabled=boolean variable”,但无法将其设置为“false”

这两个选项中的任何一个在合理的语言中都应该很容易,但我不能让它们都起作用!谢谢你的帮助

如果要使用maven构建jar,那么需要像在gradlebuilddef中一样包含所有依赖项

如果您想让jar能够与
java-jar my.jar
一起运行,那么您还需要使用一些构建插件来实现这一点


你可以找到更多的细节,原来很简单!结果是上面的第二个选项:

“…在uploadArchives中抑制'jar'任务,这样它就不会弄乱我已经拥有的“胖”jar!”

-xjar
添加到上传存档的命令行


谢谢你,@samvel1024

我认为无法准确推断jar文件是如何生成的。您能不能也添加pom.xml的这一部分?我想它应该是一个构建插件。列出jar的内容并发布相关的内容也可能会有所帮助。您可以使用
tar-tfmyexample.jar
来实现这一点。查找导致
NoClassDefFoundError
@samvel1024的类,这是整个pom.xml-它是由build.gradle生成的-这是-可能它缺少一些重要的东西…?当数学包在应用程序jar文件中时,它工作正常!我想我不明白的是,当jar文件中的数学包丢失时,应用程序是如何定位相关类的——它设法在我的机器上定位,但在我妻子的机器上却没有!短暂性脑缺血发作