UnsupportedClassVersionError: ошибка с версией Gradle и Java Runtime
Я очень новичок в Gradle, и я хотел попробовать этот крутой проект: Strange, API Quantum Computing для Java (я оставлю ссылку на проект github ниже). Они рекомендуют использовать Gradle, так что я сделал.
В каталоге, над которым я работаю, всего 3 файла:
- Мой основной класс Java HelloStrangeWorld.java,
- build.gradle,
- и настройки.
Теперь я просто хотел проверить в своем каталоге команду:
$ gradle tasks
И я получил это:
FAILURE: сборка не удалась, исключение. * Что пошло не так: java.lang.UnsupportedClassVersionError: org/javamodularity/moduleplugin/ModuleSystemPlugin был скомпилирован более поздней версией среды выполнения Java (версия файла классов 55.0), эта версия среды выполнения Java распознает только версии файлов классов вплоть до 52,0
org / javamodularity / moduleplugin / ModuleSystemPlugin был скомпилирован более поздней версией среды выполнения Java (версия файла класса 55.0), эта версия среды выполнения Java распознает только версии файла класса до 52.0
Что я имею:
Моя Java установлена на 1.8
Я установил Graddle с помощью SDKMAN
Содержимое 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'
Содержание моего основного класса следующее:
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()));
}
}
Что я пробовал до сих пор:
Я проверил, что мой JAVA_HOME настроен на мой jdk8. Я использую zsh, поэтому я проверил как.bashrc, так и.zshrc, и переменная env установлена в обоих местах.
Я перешел с Java 8 на Java 7, он возвращает меня к тому, что Gradle не должен работать с Java 7. Поэтому я вернулся к Java 8
Я проверил символические ссылки, установленные в /etc/alternatives, и все, что связано с Java, указывают на версию 8 Java.
Я что-то упускаю из-за использования Gradle?
Спасибо
Вот ссылка на странный проект на gitHub.
2 ответа
Java 8 не поддерживает квантовые вычисления. Вам нужна Java 11 или более поздняя версия.
Шутки в сторону, проект, который вы включаете, зависит от OpenJFX 11-ea + 24, который требует Java 11.
Загрузите OpenJDK 11 здесь.
Замечания: UnsupportedClassVersionError
печатает число как 55.0
, вычитать 44
из него определить необходимую версию Java.
На прошлой неделе я обновил Android Studio на своем Mac с 2021.2.1 до 2021.3.1. Тогда наш проект был построен неудачно по аналогичной причине:
Причина: com/android/tools/idea/gradle/run/OutputBuildAction был скомпилирован более новой версией среды выполнения Java (версия файла класса 55.0), эта версия среды выполнения Java распознает только версии файла класса до 53.0.
Я нашел несколько обсуждений на форуме Jetbrains YouTrack Forum: Не удалось запустить проект Android в EAP Idea 2020.3 (OutputBuildAction был скомпилирован более новой версией Java Runtime (версия файла класса 55.0)) . Предлагаемый обходной путь — обновить определенную версию Gradle JDK до JDK11, но многие проекты Android не поддерживают Gradle JDK11, как и мой.
Другое решение — понизить версию Android Studio с 2021.3.1 до 2021.2.1, и мне это помогло. Надеюсь, поможет.