不能运行 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。它应该工作
我想为我的 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。它应该工作