幫助解決 java.lang.UnsupportedClassVersionError: in Gradle 專案。
我在控制臺中運行程式時遇到問題,但是當我在 IntelliJ IDEA 中運行程式時一切正常。
在我看來,問題出在 gradle.buidl
plugins {
id 'java'
id 'application'
}
group 'org.example'
version '1.0-SNAPSHOT'
mainClassName = "com.gmail.*.division.Main"
application {
mainClass.set("com.gmail.*.division.Main")
}
applicationDefaultJvmArgs = ["-Djavafx.embed.singleThread=true"]
sourceCompatibility = JavaVersion.VERSION_16
targetCompatibility = JavaVersion.VERSION_16
repositories {
mavenCentral()
}
dependencies {
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.6.0'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine'
compileOnly group: 'javax', name: 'javaee-api', version: '8.0'
implementation 'jakarta.enterprise:jakarta.enterprise.cdi-api:3.0.0'
}
jar {
manifest.attributes('Main-Class': 'com.gmail.*.division.Main')
}
//For javaDoc - skipping a method without a description
if (JavaVersion.current().isJava8Compatible()) {
allprojects {
tasks.withType(Javadoc) {
options.addStringOption('Xdoclint:none', '-quiet')
}
}
}
test {
useJUnitPlatform()
}
task makeJavadoc(type: Jar, dependsOn: javadoc) {
from docsDir
archiveClassifier.set("docs")
description = 'Creates a Javadoc Jar'
}
task sourcesJar(type: Jar, dependsOn: classes) {
archiveClassifier.set("sources")
from sourceSets.main.allSource
}
task javadocJar(type: Jar, dependsOn: javadoc) {
archiveClassifier.set("javadoc")
from javadoc.destinationDir
}
artifacts {
archives sourcesJar
archives javadocJar
}
我使用 Gradle 7.2 和 java 16
錯誤
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: com/gmail/*/division/Main has been compiled by a more recent version of the Java Runtime (class file version 60.0), 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)
如有任何幫助,我將不勝感激!!!
uj5u.com熱心網友回復:
將 %JAVA_HOME% 環境變數更改為 IntelliJ 應該可以解決此問題。
您可能正在使用帶有 IntelliJ 的 Java 16 和帶有命令列和的另一個版本。
如果您使用 Windows 并鍵入,則可以使用命令列
echo %JAVA_HOME%
然后更改為 IntelliJ IDEA 版本。
IntelliJ 將專案使用的 JDK 版本存盤在其專案結構中。所以要檢查您使用的是哪個版本有兩種方法可以找到它:
- 通過選單導航:導航到檔案 -> 專案結構
- 通過鍵盤快捷鍵:對于 OSX,我們按 ? ; 對于 Windows,我們按 Ctrl Shift Alt S
如果您使用 Windows,則可以轉到命令列:
setx -m JAVA_HOME "C:\Path\to\IntelliJ\version"
setx -m PATH "%PATH%;%JAVA_HOME%\bin";
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/347709.html
上一篇:(LWJGL3.2.3)build.gradle在實作LWJGL組件時不會構建
下一篇:添加華為套件時出現“Couldnotfindcom.huawei.hms:location:6.0.0.302”錯誤
