有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java无法运行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运行时环境采用OpenJDK(build 11.0.7+10) OpenJDK 64位服务器VM采用OpenJDK(构建11.0.7+10,混合模式)

如果你有任何其他项目可以做这项工作,我很高兴知道。 事实上,我正在为两个操作系统(Windows和Mac)寻找等同于InnoSetup的东西

谢谢你的帮助


共 (2) 个答案

  1. # 1 楼答案

    我也犯了同样的错误,发现你的问题在寻找解决方案

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

    运行launch4j。使用此java版本手动运行jar,效果如预期:

    jdk-9.0.4.jdk/Contents/Home/bin/java -jar ~/Downloads/launch4j/launch4j.jar 
    
  2. # 2 楼答案

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

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

    从11改为8(我不确定其他版本是否有效)

    重新运行命令java-jar launch4j。它应该有用

    enter image description here