无法运行 Launch4j(非法访问)
Posted
技术标签:
【中文标题】无法运行 Launch4j(非法访问)【英文标题】:Cannot run Launch4j (illegal access) 【发布时间】:2020-11-19 01:19:48 【问题描述】:我想为我的 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-Bit Server VM AdoptOpenJDK(build 11.0.7+10,混合模式)
如果您有任何其他程序可以完成这项工作,我会很高兴知道。 事实上,我正在为两个操作系统(Windows 和 Mac)寻找与 InnoSetup 等效的东西
感谢您的帮助
【问题讨论】:
【参考方案1】:我遇到了同样的错误,发现您的问题正在寻找解决方案。
我最终通过从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
【讨论】:
【参考方案2】:如果您使用的是 java 11 和 Linux,请下载并安装另一个 java 版本。我安装了 java 8。
运行命令“sudo update-alternatives --config java”列出您计算机中安装的所有java版本。该命令将提供更改默认 java 版本的选项。
从 11 更改为 8(不确定是否有其他版本可以使用)。
重新运行命令 java -jar launch4j。它应该工作
【讨论】:
以上是关于无法运行 Launch4j(非法访问)的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Gradle 中使用带有混淆 jar 的 Launch4J
无法编译 rtmidi 测试 cmidiin.cpp 文件,非法指令
无法为 github 和 aws 生成 ssh 密钥(非法选项 -- C)