gpt4 book ai didi

deployment - JavaFX native bundle exe 抛出 "JavaFx launcher Exception",可执行 Jar 文件完美运行

转载 作者:行者123 更新时间:2023-12-03 09:43:49 30 4
gpt4 key购买 nike

很长一段时间我在运行应用程序 jar 时遇到问题 -

我正在使用 Proguard 对 JAR 进行混淆,该 JAR 文件还包含一些资源文件,如图像、.version 文件等以及 publicCerts.store 文件。

因此,为了将资源文件包含到最终的 JAR 中,我已将所有资源文件指定为

-adaptresourcefilecontents **.fxml,**.properties,META-INF/MANIFEST.MF,images/*.jar,*.version,publicCerts.store 

但是在运行我的应用程序 JAR 时我得到了执行 -

 Exception in Application start method
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.javafx.main.Main.a(Main.java:642)
at com.javafx.main.Main.main(Main.java:805)
Caused by: java.lang.RuntimeException: Exception in Application start method
at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherIm
pl.java:403)
at com.sun.javafx.application.LauncherImpl.access$000(LauncherImpl.java:
47)
at com.sun.javafx.application.LauncherImpl$1.run(LauncherImpl.java:115)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.AssertionError: java.security.KeyStoreException: Uninitiali
zed keystore
at de.schlichtherle.license.LicenseNotary.getPublicKey(Unknown Source)
at de.schlichtherle.license.LicenseNotary.verify(Unknown Source)
at de.schlichtherle.license.LicenseManager.verify(Unknown Source)
at de.schlichtherle.license.LicenseManager.verify(Unknown Source)

at com.sun.javafx.application.LauncherImpl$5.run(LauncherImpl.java:319)
at com.sun.javafx.application.PlatformImpl$5.run(PlatformImpl.java:206)
at com.sun.javafx.application.PlatformImpl$4.run(PlatformImpl.java:173)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.access$100(WinApplication.java:29
)
at com.sun.glass.ui.win.WinApplication$3$1.run(WinApplication.java:73)
... 1 more
Caused by: java.security.KeyStoreException: Uninitialized keystore
at java.security.KeyStore.isKeyEntry(Unknown Source)
... 17 more

我认为混淆会破坏 publicCerts.store,所以对 publicCerts.store 使用另一个混淆选项

-adaptresourcefilenames publicCerts.store
-adaptresourcefilecontents **.fxml,**.properties,META-INF/MANIFEST.MF,images/*.jar,.version

并且有效。当我过去双击应用程序 jar 时,它显示我的应用程序窗口,但现在 native 捆绑可执行文件 (exe) 在相同情况下以相同条件向我显示此对话框。

enter image description here

已编辑 -

I have debugged the issue and found that it's throwing exception - 
java.lang.AssertionError: java.security.NoSuchAlgorithmException: PBEWithMD5AndDES SecretKeyFactory not available java.security.NoSuchAlgorithmException: PBEWithMD5AndDES SecretKeyFactory not available

我想知道 native 捆绑可执行文件 (exe) 是由同一个可执行文件组成的,但 exe 不工作。这是部署应用程序和创建 native bundle exe 的 ANT 步骤。

<target name="CreatingExe" depends="SignedJar">
<fx:deploy width="800" height="600" nativeBundles="all" outdir="${dist}" outfile="${app.name}">
<fx:info title="${app.title}"/>
<fx:application name="${app.title}" mainClass="${main.class}"/>
<fx:resources>
<fx:fileset dir="${distBI}" includes="*.jar"/>
<fx:fileset dir="${WorkingFolder}/temp"/>
</fx:resources>
</fx:deploy>
</target>

仅供引用:我正在 Windows 8 操作系统 64 位机器上运行我的构建。我正在按照以下步骤部署我的 JavaFX 应用程序-

Compiling JavaFX Code.
Creating JAR.
Obfuscating code.
Signing Jar
Creating Executable.
Signing Executable.

Build was successful.

如何从混淆中排除 publicCerts.store?为什么最终的 exe 不工作,即使应用程序 jar 正在工作?我是否需要在 fx:deploy 任务中指定任何其他内容?

最佳答案

构建 JavaFx 本地包时 ext <JDK.HOME> 下的文件夹不包括在内。此文件夹包含的主要是安全内容。

<!--Copy the ext library to the runtime lib-->
<copydir src="${java.home}/lib/ext"
dest="${dist.jar.dir}/bundles/{YOUR.PACKAGE.NAME}/runtime/jre/lib/ext"
includes="**/*"
/>

关于deployment - JavaFX native bundle exe 抛出 "JavaFx launcher Exception",可执行 Jar 文件完美运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14137169/

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