当前位置: 首页 > 知识库问答 >
问题:

如何将可执行javafx jar与依赖jar捆绑在一起?

郎睿
2023-03-14

我制作了一个javafx应用程序表单,我得到了一个可执行的jar作为输出。现在,我的javafx应用程序依赖于两个第三方JAR,比如commons。伊奥。2.4.罐子

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

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

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

因为javafx使用ant构建,所以我尝试使用

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

但是在捆绑了所有依赖的jar之后,我没有得到可执行的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=

共有3个答案

姜楷
2023-03-14

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
阙俊友
2023-03-14

在使用exe4j之前,我也遇到了同样的问题。我已经添加了所有需要的罐子,并且exe4j在一个容器中绑定了所有罐子。这对我有用。确保在添加jar时添加了主jar的主类路径。

宋弘壮
2023-03-14

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

<jar destfile="application.jar">
    <zipfileset src="Dependent.jar" excludes="META-INF/MANIFEST.MF/>
</jar>
 类似资料:
  • 我创建了一个Java应用程序,它使用运行库执行Python脚本。我想知道是否有一种方法可以将Python.exe和必需的库包含在Jar文件中?

  • 背景: 在我的组织中,有很多基于Java的Windows桌面应用程序。在我们的专有软件部署系统中,应用程序不包含单独的JRE/JDK。而是将一个通用的JRE(到目前为止,Oracle8 Java SE JRE)部署到用户机器上,该机器根据环境变量附加到各个应用程序。 此外,是否可以在JDK11上使用jlink来创建一个包含被删除的Java SE EE模块的运行时?我可以使用Java10中的jlin

  • 我创建了一个依赖于SLF4J的捆绑包,因此使用Logback来实现OSGI。这一切都捆绑起来并安装正常,但是当我开始捆绑时,我得到以下异常: org.osgi.framework.BundleException: 無法解析 com.felix.test [20](R 20.0): missing requirements [com.felix.test [20](R 20.0)] osgi.wir

  • 你能帮我解决这个问题吗? 谢了!

  • 如何让gradle将一些依赖项作为jar包含到模块结果jar中?i、 e.在文件夹中使用嵌套jar制作jar? 这不是Android项目,多模块项目中的许多模块都应该这样做,所以类似fatJar、uberJar和shadowJar的解决方案似乎不适合。

  • 我从。jar文件创建了。exe文件。现在我的客户机要求运行应用程序而不在系统中安装jre。我听说使用捆绑的jre是可能的...但我不知道如何将jre与。exe文件捆绑...