Я только что задал вопрос об использовании javafxpackager для создания баннеров JavaFX, вы можете увидеть его здесь. Моя проблема заключалась в том, что я не мог включить classpath в манифест. Ну, пока я ждал ответа, я попробовал maven-antrun-plugin
. Это сработало хорошо, и я мог запускать свое приложение с зависимостями, НО (всегда есть), но только с зависимостями OUTSIDE моей последней банкой. Так оно и есть:
FinalJar.jar
lib
|_{all dependencies here}
Мой файл манифеста указывает на зависимости через свойство JavaFX-Class-Path
. Если я помещаю зависимости внутри jar, как я хочу, он не находит мои зависимости. Любая помощь?
РЕДАКТИРОВАТЬ: Здесь шаг добавления зависимостей к банке, внутри внутри pom.xml:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.6</version>
<executions>
<execution>
<phase>package</phase>
<configuration>
<target>
<taskdef name="jfxjar" classname="com.sun.javafx.tools.ant.FXJar"
classpathref="maven.plugin.classpath" />
<jfxjar
destfile="${project.build.directory}/dist/${project.build.finalName}">
<fileset dir="${project.build.directory}/classes" />
<!-- Adds the dependencies to jar -->
<fileset dir="${project.build.directory}/lib/" includes="*.jar" />
<application name="${project.name}" mainClass="com.google.code.mzplay.principal.PrincipalFX" />
<resources>
<!-- Adds the dependencies to classpath -->
<fileset dir="${project.build.directory}/lib/" includes="*.jar" />
</resources>
</jfxjar>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ant-javafx</artifactId>
<version>${javafx.version}</version>
<systemPath>${java.home}/../lib/ant-javafx.jar</systemPath>
<scope>system</scope>
</dependency>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>javafx</artifactId>
<version>${javafx.version}</version>
<systemPath>${java.home}/lib/jfxrt.jar</systemPath>
<scope>system</scope>
</dependency>
</dependencies>
</plugin>