首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何编译针对java 8的Java项目?

如何编译针对java 8的Java项目?
EN

Stack Overflow用户
提问于 2022-04-05 10:08:09
回答 2查看 102关注 0票数 -1

我有一个Java (一个要播放connect 4的应用程序),我想将它转换成一个可执行文件。我在VsCode中创建了这个项目,我正在使用(请参阅下面的详细信息)。我提取了.jar文件,并使用Launch4J将其转换为可执行文件,当我运行它时,会收到一条错误消息(参见下面)。

我研究了这个问题,我似乎需要编译针对Java 8的代码,而不是17 (我目前已经安装了17 )。有人能给我解释一下我该怎么做吗,或者我还做错了什么?

该项目有多个文件。我不确定这是否相关,但该项目没有外部依赖关系,尽管它确实使用了javax.swingjavax.soundjava.awt (以及java.io.File、java.io.IOException和java.util.Random,但我确信这些都与此无关)。

如果有必要的话,我已经安装了eclipse,但我今天才安装,根本没有使用它的经验。我使用的JDK是(我相信) 1.8.0_321版本。(至少这是我输入java -version时得到的。)Java编译器版本是javac 17.0.2

当我试图运行由Launch4J生成的可执行文件时,我得到以下错误:

代码语言:javascript
复制
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)

弹出错误:

代码语言:javascript
复制
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. (这是默认的)。

所有其他设置都是默认设置。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-04-12 09:10:11

@Holger已经回答了这个问题。解决这个问题的方法是在JLink的帮助下与应用程序一起发布一个定制的JRE映像。这样,无论JRE的本地版本如何,都可以使用它。

票数 0
EN

Stack Overflow用户

发布于 2022-04-12 07:25:52

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71749886

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档