У меня есть приложение Swing, которое использует классы из артефакта Maven math.geom2d:javaGeom:0.11.1
. Чтобы создать файл JAR в выпуске GitHub, я использую модифицированную задачу «fatJar» build.gradle, поэтому классы geom2d включены в файл JAR. Для файла jar для моего приложения на Maven я не включаю классы geom2d, поэтому эти классы не отображаются в этом файле jar, но на них ссылаются как на зависимости.
Странно то, что на моей машине этот (меньший) файл jar стабильно работает нормально, поэтому я подумал, что все в порядке, даже если это странно! Я решил попробовать его на компьютере моей жены, и он зависает с NoClassDefFoundError. Я подумал, может быть, это потому, что у нее не было Maven установлен ... пытался установить его, но без разницы! Помощь будет оценена!
Вот pom.xml на Maven для моего приложения:
<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! Теперь у меня есть лучшее представление о том, что происходит:
файл jar без классов geom2d может работать, потому что у меня есть geom2d в моем classpath - его больше нет!
Я создаю fatJar, используя задачу в build.gradle, но uploadArchives создает новый файл jar, который не является «толстым»!
Итак, я бы хотел добавить задачу fatJar в свою функцию uploadArchives:
ИЛИ
- подавить задачу jar в uploadArchives, поэтому она нене испортите "толстую" баночку, которая у меня уже есть! Я пробовал «jar.enabled = логическая переменная», но я не могу установить его в «ложь» ...
Любой из этих двух вариантов должен быть простым на разумном языке, но яне могу заставить ни на работу! Помощь будет оценена!