我有一个Java (一个要播放connect 4的应用程序),我想将它转换成一个可执行文件。我在VsCode中创建了这个项目,我正在使用(请参阅下面的详细信息)。我提取了.jar文件,并使用Launch4J将其转换为可执行文件,当我运行它时,会收到一条错误消息(参见下面)。
我研究了这个问题,我似乎需要编译针对Java 8的代码,而不是17 (我目前已经安装了17 )。有人能给我解释一下我该怎么做吗,或者我还做错了什么?
该项目有多个文件。我不确定这是否相关,但该项目没有外部依赖关系,尽管它确实使用了javax.swing、javax.sound和java.awt (以及java.io.File、java.io.IOException和java.util.Random,但我确信这些都与此无关)。
如果有必要的话,我已经安装了eclipse,但我今天才安装,根本没有使用它的经验。我使用的JDK是(我相信) 1.8.0_321版本。(至少这是我输入java -version时得到的。)Java编译器版本是javac 17.0.2
当我试图运行由Launch4J生成的可执行文件时,我得到以下错误:
Exception in thread "main" java.lang.UnsupportedClassVersionError: Main has been compiled by a more recent version of the Java Runtime (class file version 61.65535), this version of the Java Runtime only recognizes class file versions up to 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)弹出错误:
Java Virtual Machine Launcher
Error: A JNI error has occurred, please check your installation and try again.下面是我在Launch4J中使用的设置:
Output File: C:\Users\username\OneDrive\Coding\Java Connect 4 v.2\Connect 4.exe
Jar: C:\Users\username\OneDrive\Coding\Java\Java Connect 4 v.2\Java Connect 4 v.2.jar
Don't wrap the jar, launch only: NOT ticked
Wrapper Manifest: none
Change dir: .
Command Line args: none
Process priority: Normal
Both Options NOT ticked
Min JRE version: 1.2.0, Prefer public JRE, but use JDK runtime if newer
Max JRE version: none, First 64-bit, then 32-bit. (这是默认的)。
所有其他设置都是默认设置。
发布于 2022-04-12 09:10:11
@Holger已经回答了这个问题。解决这个问题的方法是在JLink的帮助下与应用程序一起发布一个定制的JRE映像。这样,无论JRE的本地版本如何,都可以使用它。
发布于 2022-04-12 07:25:52
https://stackoverflow.com/questions/71749886
复制相似问题