UnsupportedClassVersionError : Gradle 和 Java 运行时版本错误

Lob*_*meh 3 java gradle unsupported-class-version java-runtime-compiler

我对 Gradle 非常陌生,我想尝试一下这个很酷的项目:Strange,一个用于 Java 的量子计算 API(我将在下面留下指向 github 项目的链接)。他们推荐使用 Gradle,所以我这样做了。

在我正在处理的目录中,只有 3 个文件:

  1. 我的 java 主类HelloStrangeWorld.java
  2. 构建.gradle
  3. settings.gradle

现在我只想在我的目录中测试命令:

$ gradle tasks
Run Code Online (Sandbox Code Playgroud)

我得到了这个:

FAILURE:构建失败,出现异常。* 出了什么问题:java.lang.UnsupportedClassVersionError: org/javamodularity/moduleplugin/ModuleSystemPlugin 已由更新版本的 Java Runtime(类文件版本 55.0)编译,此版本的 Java Runtime 仅识别最高版本的类文件52.0

org/javamodularity/moduleplugin/ModuleSystemPlugin 已由更新版本的 Java Runtime(类文件版本 55.0)编译,此版本的 Java Runtime 仅识别高达 52.0 的类文件版本


我拥有的 :

  • 我的 Java 设置为 1.8

  • 我使用 SDKMAN 安装了 Gradle

build.gradle的内容如下:

plugins {
    id 'java'
    id 'application'
    id 'org.javamodularity.moduleplugin' version '1.2.1'
}

group 'helloStrangeWorld'
version '1.0-SNAPSHOT'

repositories {
    mavenCentral()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
    compile 'com.gluonhq:strange:0.0.5'
}

mainClassName = 'HelloStrangeWorld'
Run Code Online (Sandbox Code Playgroud)

我的主课内容如下:

import com.gluonhq.strange.*;
import com.gluonhq.strange.gate.*;
import com.gluonhq.strange.local.SimpleQuantumExecutionEnvironment;
import java.util.Arrays;

public class HelloStrangeWorld {

    public static void main(String[] args) {
        Program p = new Program(2);
        Step s = new Step();
        s.addGate(new X(0));
        p.addStep(s);
        Step t = new Step();
        t.addGate(new Hadamard(0));
        t.addGate(new X(1));
        p.addStep(t);
        SimpleQuantumExecutionEnvironment sqee = new SimpleQuantumExecutionEnvironment();
        Result res = sqee.runProgram(p);
        Qubit[] qubits = res.getQubits();
        Arrays.asList(qubits).forEach(q -> System.out.println("qubit with probability on 1 = "+q.getProbability()+", measured it gives "+ q.measure()));
    }

}
Run Code Online (Sandbox Code Playgroud)

到目前为止我尝试过的:

  • 我已经检查过我的 JAVA_HOME 是否设置为我的 jdk8。我使用 zsh,所以我检查了 .bashrc 和 .zshrc,并且在两个地方都设置了 env 变量。

  • 我从 Java 8 更改为 Java 7,它告诉我 Gradle 不应该与 Java 7 一起使用。所以我又回到了 Java 8

  • 我检查了 /etc/alternatives 中设置的符号链接,所有与 java 相关的都指向 java 的版本 8

我是否遗漏了一些明显的关于 Gradle 的使用?

谢谢

这是gitHub 上 Strange 项目的链接。

rus*_*tyx 6

Java 8 不支持量子计算。您需要 Java 11 或更高版本。

言归正传,你包括项目取决于的OpenJFX 11-EA + 24,这需要Java 11。

在此处获取 OpenJDK 11 。

注意:UnsupportedClassVersionError打印一个数字,如55.0. 从中减去 44以确定所需的 Java 版本。

  • “Java 8 不支持量子计算。” 洛洛洛尔 (4认同)