0

我想为我的 java 桌面应用程序创建一个 .exe 文件。因此,我看到 Launch4j 是最好的选择。

我跑的时候。该文件,我有以下错误消息。

WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by com.thoughtworks.xstream.core.util.Fields (file:/usr/local/Cellar/launch4j/3.12/libexec/lib/xstream.jar) to field java.util.Properties.defaults
WARNING: Please consider reporting this to the maintainers of com.thoughtworks.xstream.core.util.Fields
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/java/swing/plaf/windows/WindowsLookAndFeel
    at java.base/java.lang.ClassLoader.defineClass1(Native Method)
    at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017)
    at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)
    at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:800)
    at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:698)
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:621)
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:579) 
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) 
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522) 
    at net.sf.launch4j.Main.main(Main.java:59) Caused by: java.lang.ClassNotFoundException: com.sun.java.swing.plaf.windows.WindowsLookAndFeel 
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)   
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)  ... 10 more

我在 Mac OS Catalina 版本 10.15.3 下工作。以及我的Java版本环境:openjdk version "11.0.7" 2020-04-14 OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.7+10) OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.7+10, mixed mode)

如果您有任何其他程序可以完成这项工作,我会很高兴知道。事实上,我正在为两个操作系统(Windows 和 Mac)寻找相当于 InnoSetup 的东西

感谢您的帮助

4

2 回答 2

0

如果您使用的是 java 11 并使用 Linux,请下载并安装另一个 java 版本。我安装了java 8。

运行命令“ sudo update-alternatives --config java ”以列出您计算机中安装的所有java版本。该命令将提供更改默认 java 版本的选项。

从 11 更改为 8(我不确定是否有任何其他版本可以工作)。

重新运行命令 java -jar launch4j。它应该工作

在此处输入图像描述

于 2020-09-14T21:20:13.523 回答
0

我遇到了同样的错误,发现您的问题正在寻找解决方案。

我最终通过从https://jdk.java.net/archive/的存档下载 openJDK 9.0.4 来运行 launch4j 。

使用此 java 版本手动运行 launch4j.jar 按预期工作:

jdk-9.0.4.jdk/Contents/Home/bin/java -jar ~/Downloads/launch4j/launch4j.jar 
于 2020-08-07T17:13:49.243 回答