Устранение неполадок UnsupportedClassVersionError в IntelliJ IDEA
Я прохожу курс Java, используя Intellij IDEA. В этом "тестовом" проекте у меня есть только два тестовых класса, как показано ниже (они действительно не имеют никакого кода). Прежде чем я попаду в проблему, мне просто нужно сказать, что все мои проекты работают правильно, просто у меня есть следующая проблема с запуском команды терминала, и я боюсь, что что-то напутало с моей IDE:
Проблема возникает, когда мне нужно получить серийную версию класса BankAccount с помощью следующей команды:
E:\Software Projects\Test\out\production\Test>serialver com.company.BankAccount
Я получаю сообщение об ошибке, показанное ниже, и понимаю, что классы были скомпилированы с помощью более новой ошибки Java Runtime, но как мне устранить ее в Intellij? Я получаю ту же ошибку при запуске команды на любом классе в любом проекте.
Дополнительное примечание: я также получаю сообщение об ошибке, связанной с этим, при запуске класса Main в терминале с использованием java com.company.Main
Что, я думаю, может быть причиной проблемы: прежде чем даже попробовать "serialver" в первый раз, я изменил имя папки проекта (я просто использовал "Rename" в моем проводнике файлов в Windows, и он все испортил в Intellij (какой бы проект я не открыл, у него не было SDK и конфигураций Run/Debug). Итак, я выбрал "Add SDK" в проекте (или что-то подобное, и выбрал JRE 12 из списка. Затем я выполнил "Debug"). Main "и Run/Debug Configurations были установлены автоматически.
Когда я захожу в Структура проекта> Настройки проекта> SDK, у меня есть только один SDK:"C:\Program Files\Java\jdk-12.0.1".
Когда я перехожу к "Запуск / отладка конфигураций" в проекте, в JRE "Приложение"> "Главное" я должен выбрать следующее (но, насколько я понимаю, это все один и тот же SDK, верно?):
- По умолчанию (12 - SDK модуля "Тест")
- 12 (версия Java "12.0.1")
- "C: \ Program Files \ Java \ jdk-12.0.1"
Так что я не знаю, как я могу что-то здесь настроить? Как мне удалось скомпилировать эти классы в более новой версии Java Runtime в любой момент?
Проблема здесь в том, что я не уверен, что что-то не так, или что предыдущие настройки что-то испортили.
Классы:
package com.company;
public class Main {
public static void main(String[] args) {
// write your code here
}
}
package com.company;
public class BankAccount {
}
При беге E:\Software Projects\Test\out\production\Test>serialver com.company.BankAccount
В терминале я получаю следующую ошибку:
Exception in thread "main" java.lang.UnsupportedClassVersionError: com/company/BankAccount has been compiled by a more recent version of the Java Runtime (class file version 56.
0), this version of the Java Runtime only recognizes class file versions up to 55.0
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016)
at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)
at java.base/java.net.URLClassLoader.defineClass(URLClassLoader.java:550)
at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:458)
at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:452)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:451)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:588)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:398)
at jdk.compiler/sun.tools.serialver.SerialVer.resolveClass(SerialVer.java:108)
at jdk.compiler/sun.tools.serialver.SerialVer.serialSyntax(SerialVer.java:80)
at jdk.compiler/sun.tools.serialver.SerialVer.main(SerialVer.java:188)
Ошибка при запуске основного класса с E:\Software Projects\Test\out\production\Test>java com.company.Main
:
Error: LinkageError occurred while loading main class com.company.Main
java.lang.UnsupportedClassVersionError: com/company/Main has been compiled by a more recent version of the Java Runtime (class file version 56.0), this version of the Java Runtime only recognizes class file versions up to 55.0
3 ответа
Бегать java -version
в командной строке. Если это не Java 12 или более поздняя версия, это объяснит проблему. Вы ориентируетесь на версию Java 12 при запуске ее на более старой версии Java.
Решением было бы либо настроить уровень целевого языка, чтобы ваш код мог работать на более старых версиях Java, либо настроить ваш PATH
среда, так что java
из JDK 12 установочный каталог является первым. Или вы можете указать полный путь к java.exe
в командной строке при попытке запустить код:
E:\Software Projects\Test\out\production\Test>"C:\Program Files\Java\jdk-12.0.1\bin\java.exe" com.company.Main
У меня возникла эта проблема, когда для моих «Конфигураций запуска/отладки» была установлена другая версия.
Я обновил их по умолчанию до уровня модуля, и это решило проблему для меня.
Решено путем редактирования файла "idea.properties" и установки правильной версии JVMVersion