gpt4 book ai didi

java - 创建 JavaFX 可执行文件,包括 JRE 和外部库

转载 作者:行者123 更新时间:2023-11-30 08:06:31 29 4
gpt4 key购买 nike

我在NetBeans下开发了一个JavaFX应用程序,它需要JRE8u60和一些外部库(jar和dll)以及一个“SQLite”数据库文件才能运行。我正在寻找一种方法来创建可执行文件或安装程序,其中包括(或安装)此版本的 JRE 和所需的库。

首先,我尝试使用 NetBeans native 打包程序,如 https://netbeans.org/kb/docs/java/native_pkg.html#fx 中所示。 ,但是当我运行获得的安装程序时,可执行文件说找不到主类。我只是按照该教程进行操作,所以我不知道我是否错过了适合我的特定情况的一些必要点。我的 build.xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<project name="Petra" default="default" basedir="." xmlns:fx="javafx:com.sun.javafx.tools.ant">
<description>Builds, tests, and runs the project Petra.</description>
<import file="nbproject/build-impl.xml"/>
<target name="-post-jfx-deploy">
<fx:deploy width="${javafx.run.width}" height="${javafx.run.height}"
nativeBundles="all"
outdir="${basedir}/${dist.dir}" outfile="${application.title}">
<fx:application name="${application.title}" mainClass="${javafx.main.class}"/>
<fx:resources>
<fx:fileset dir="${basedir}/${dist.dir}" includes="Petra.jar"/>
</fx:resources>
<fx:info title="${application.title}" vendor="${application.vendor}"/>
<fx:platform basedir="C:\Program Files\Java\jdk1.8.0_60"/>
</fx:deploy>
</target>
</project>

编译时的输出似乎没有任何错误:

ant -f C:\\Users\\jros\\Documents\\NetBeansProjects\\Petra jfx-rebuild
init:
deps-clean:
Updating property file: C:\Users\jros\Documents\NetBeansProjects\Petra\build\built-clean.properties
Deleting directory C:\Users\jros\Documents\NetBeansProjects\Petra\build
clean:
init:
deps-jar:
Created dir: C:\Users\jros\Documents\NetBeansProjects\Petra\build
Updating property file: C:\Users\jros\Documents\NetBeansProjects\Petra\build\built-jar.properties
Created dir: C:\Users\jros\Documents\NetBeansProjects\Petra\build\classes
Created dir: C:\Users\jros\Documents\NetBeansProjects\Petra\build\empty
Created dir: C:\Users\jros\Documents\NetBeansProjects\Petra\build\generated-sources\ap-source-output
Compiling 19 source files to C:\Users\jros\Documents\NetBeansProjects\Petra\build\classes
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
Copying 26 files to C:\Users\jros\Documents\NetBeansProjects\Petra\build\classes
compile:
Created dir: C:\Users\jros\Documents\NetBeansProjects\Petra\dist
Copying 3 files to C:\Users\jros\Documents\NetBeansProjects\Petra\dist\lib
Detected JavaFX Ant API version 1.3
Launching <fx:jar> task from C:\Program Files\Java\jdk1.8.0_60\jre\..\lib\ant-javafx.jar
Launching <fx:deploy> task from C:\Program Files\Java\jdk1.8.0_60\jre\..\lib\ant-javafx.jar
No base JDK. Package will use system JRE.
RelativeFileSet{basedir:C:\Users\jros\Documents\NetBeansProjects\Petra\dist, files:[Petra.jar, lib\RXTXcomm.jar, lib\ojdbc6.jar, lib\sqlitejdbc-0.5.4.jar]}
No base JDK. Package will use system JRE.
Using base JDK at: C:\Program Files\Java\jdk1.8.0_60\jre
RelativeFileSet{basedir:C:\Users\jros\Documents\NetBeansProjects\Petra\dist, files:[Petra.jar]}
Using base JDK at: C:\Program Files\Java\jdk1.8.0_60\jre
Creating app bundle: Petra in C:\Users\jros\Documents\NetBeansProjects\Petra\dist\bundles
Result application bundle: C:\Users\jros\Documents\NetBeansProjects\Petra\dist\bundles
Installer (.exe) saved to: C:\Users\jros\Documents\NetBeansProjects\Petra\dist\bundles
RelativeFileSet{basedir:C:\Users\jros\Documents\NetBeansProjects\Petra\dist, files:[Petra.jar]}
jfx-deployment-script:
jfx-deployment:
jar:
jfx-rebuild:
BUILD SUCCESSFUL (total time: 3 minutes 31 seconds)

但是当我运行安装程序时,生成的“exe”会抛出这两个窗口:

enter image description here

enter image description here

有什么线索吗?

最佳答案

我还没有找到将 JRE 直接放入可执行文件的方法,但这里有一种方法至少可以将所有库放入 Jar 中(使用 Netbeans)以减少困惑。您之前可能在 StackOverflow 的其他地方见过它。

  1. 清理并构建您的程序。
  2. 打开文件

enter image description here

  • 将此代码添加到 build.xml:

    <target name="package-for-store" depends="jar">

    <property name="store.jar.name" value="MyJarName"/>

    <!-- don't edit below this line -->

    <property name="store.dir" value="store"/>
    <property name="store.jar" value="${store.dir}/${store.jar.name}.jar"/>

    <echo message="Packaging ${application.title} into a single JAR at ${store.jar}"/>

    <delete dir="${store.dir}"/>
    <mkdir dir="${store.dir}"/>

    <jar destfile="${store.dir}/temp_final.jar" filesetmanifest="skip">
    <zipgroupfileset dir="dist" includes="*.jar"/>
    <zipgroupfileset dir="dist/lib" includes="*.jar"/>

    <manifest>
    <attribute name="Main-Class" value="${main.class}"/>
    </manifest>
    </jar>

    <zip destfile="${store.jar}">
    <zipfileset src="${store.dir}/temp_final.jar"
    excludes="META-INF/*.SF, META-INF/*.DSA, META-INF/*.RSA"/>
    </zip>

    <delete file="${store.dir}/temp_final.jar"/>

    </target>
  • 只需将 MyJarName 更改为您想要调用 Jar 文件的任何名称(保留 .jar 扩展名)。

  • 右键单击 build.xml,然后单击运行目标<其他目标
  • enter image description here

  • 一切准备就绪。完整的 jar 将位于主项目文件夹中名为 store 的文件夹中。然后您可以在 Launch4J 中将其打包为 .exe。
  • 关于java - 创建 JavaFX 可执行文件,包括 JRE 和外部库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31020484/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com