我有一个Swing应用程序,它使用来自Maven工件math.geom2d:javaGeom:0.11.1的类。为了在GitHub发行版中创建jar文件,我使用了一个修改过的"fatJar“build.gradle任务,因此jar文件中包含了geom2d类。对于我在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!我现在对正在发生的事情有了更好的处理:
中
或
在明智的语言中,这两种选择都应该是容易的,但我无法做到这两种选择!我会很感激你的帮助!
发布于 2019-11-05 15:12:21
如果要使用maven构建jar,那么需要像gradle building中一样包含所有的依赖项。
如果您希望jar能够使用java -jar my.jar运行,那么还需要使用一些构建插件来帮助您。
你可以找到更多的细节here
发布于 2019-11-07 18:09:20
原来是这么简单!原来是上面的第二种选择:
“.抑制uploadArchives中的' jar‘任务,这样它就不会破坏我已经拥有的”胖“jar!”
将-x jar添加到uploadArchives的命令行!
不管怎样,谢谢你,@samvel1024!
https://stackoverflow.com/questions/58699489
复制相似问题