2

我制作了一个 javafx 应用程序表单,我得到了一个可执行的 jar 作为输出。现在我的 javafx 应用程序依赖于两个 3rd 方 jar,例如 commons.io.2.4.jar。

目前要运行我的应用程序,我必须像这样将这些依赖 jar 保存在我的可执行 jar 的类路径中

--------Application.jar
----------[Classpath Folder]\dependend.jar files

但我希望所有依赖的 jar 都捆绑在我的可执行 jar 本身中。

由于 javafx 使用 ant build 我尝试使用

 <jar destfile="application.jar">
        <zipfileset src="Dependent.jar" />
 </jar>

但是在捆绑了所有依赖的 jar 之后,我没有得到可执行的 jar。我不知道问题出在哪里。

我也尝试<fx:jar> </fx:jar>了相同的标签,但无法弄清楚如何完全满足我的要求。

这是清单文件的样子:

Manifest-Version: 1.0
implementation-vendor: dhruv1767
JavaFX-Version: 2.2
implementation-title: LogsDeObfuscator
implementation-version: 1.0
JavaFX-Application-Class: com.liaison.controller.LogsDeObfuscator
JavaFX-Class-Path: lib/allatori.jar lib/commons-io-2.4.jar
Created-By: JavaFX Packager
Main-Class: com/javafx/main/Main

Name: com/javafx/main/Main.class
SHA-256-Digest: j0IuLabX3l0TgeO1+UqESD6fWA09lNsuiTtr4eue1HU=

Name: com/liaison/controller/LogsDeObfuscator.class
SHA-256-Digest: AysvgvCJeJoRdCpqu1xC8JDKttGWUQR4ce8jVW/kLDY=

Name: com/liaison/controller/Delta.class
SHA-256-Digest: TkQcfU1YWr6UwkiIj2IJpFi4UirQK7pDL26pVnAjVYM=
4

3 回答 3

1

需要注意的一件事是,任何依赖 JAR 本身是否包含清单。

<jar destfile="application.jar">
    <zipfileset src="Dependent.jar" excludes="META-INF/MANIFEST.MF/>
</jar>
于 2013-02-28T16:43:29.403 回答
0

在为此使用 exe4j 之前,我遇到了同样的问题,我已经添加了所有需要的 jar,并且 exe4j 将所有这些 jar 捆绑在一起。这对我有用。确保在添加 jar 时添加 main Jar 的 Main 类路径。

于 2013-02-28T16:18:42.880 回答
0

试试这个:

http://www.zenjava.com/2012/11/24/from-zero-to-javafx-in-5-minutes/

Maven 是必需的,但会使添加您的 Commons IO 依赖项变得轻而易举。

按照指示,我能够为 Ubuntu 制作可执行的 JAR 和本机安装程序。可执行 JAR 生成是使用以下命令完成的:

mvn jfx:build-jar

从链接工作中获取示例项目。然后将依赖项添加到 POM 文件中。

<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.4</version>
</dependency>

然后,您可以将现有代码移动到 Maven 托管 JavaFX 项目。

更多详细信息在链接上,但要生成本机安装程序,请运行以下命令:

mvn jfx:build-native
于 2013-02-28T17:47:12.580 回答