不能运行 Launch4j(非法访问)

Cannot run Launch4j (illegal access)

我想为我的 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 版本“11.0.7” 2020-04-14 OpenJDK 运行时环境 AdoptOpenJDK (build 11.0.7+10) OpenJDK 64 位服务器 VM AdoptOpenJDK(build 11.0.7+10,混合模式)

如果您有任何其他程序可以完成这项工作,我将很高兴知道。 事实上,我正在为 OS(Windows 和 Mac)

寻找与 InnoSetup 等效的东西

感谢您的帮助

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

我最终通过从 https://jdk.java.net/archive/.

的存档下载 openJDK 9.0.4 获得了 launch4j 运行

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

jdk-9.0.4.jdk/Contents/Home/bin/java -jar ~/Downloads/launch4j/launch4j.jar 

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

运行 命令“sudo update-alternatives --config java”列出所有安装的 java 版本你的电脑。该命令将提供一个选项来更改默认 java 版本。

从 11 更改为 8(我不确定是否有其他版本可用)。

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