Scala sbt run - "Неподдерживаемая версия major.minor 52.0"
Все работает без проблем, когда я работаю над IntelliJ, но когда я пытаюсь скомпилировать и запустить мой код Scala в командной строке (с помощью sbt run
), появится следующее сообщение об ошибке.
[error] (run-main-0) java.lang.UnsupportedClassVersionError: akka/event/LogSource : Unsupported major.minor version 52.0
java.lang.UnsupportedClassVersionError: akka/event/LogSource : Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:803)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2625)
at java.lang.Class.getMethod0(Class.java:2866)
at java.lang.Class.getMethod(Class.java:1676)
Я использую Ubuntu 14.04 LTS.
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04.5 LTS
Release: 14.04
Codename: trusty
И моя версия Scala равна 2.9.2.
$ scalac -version
Scala compiler version 2.9.2 -- Copyright 2002-2011, LAMP/EPFL
Я только начал изучать Scala несколько недель назад, поэтому, если бы кто-нибудь мог дать некоторые советы о том, что я должен изучить, было бы весьма полезно.
Ответы
Ответ 1
Оказалось, что в версии JRE существует несоответствие. В настройках проекта IntelliJ SDK проекта был установлен как Java 1.8 (на моей локальной машине), тогда как JRE 1.7 был установлен в системе Ubuntu (экземпляр EC2).
В Ubuntu 14.04, тогда OpenJDK 1.8 недоступен по умолчанию, поэтому следующий репозиторий должен быть добавлен вручную. Затем можно установить OpenJDK.
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-8-jre
Стандартную версию Java в системе можно изменить, выполнив следующую команду.
sudo update-alternatives --config java
Как только я установил openjdk-8-jre
и скорректировал версию Java по умолчанию в системе, команда sbt run
запускалась без каких-либо проблем.
Ответ 2
Я использую Mac и пытаюсь изучить Scala, выполнив простой учебник Scala. Я получил эту ошибку, когда пытаюсь запустить приложение.
Причина:
Моя установленная версия java была 8. Но на моем терминале версия, которую я использовал, была 7.
Fix:
Я обновил версию java до самой новой версии, а затем сработал.
Ответ 3
Обновить, чтобы исправить версию Java и скомпилировать ее снова. Он должен работать нормально
Ответ 4
Я неожиданно начал получать эту ошибку в Windows 10. Оказалось, что мой путь каким-то образом вернулся, чтобы указать на старую версию java jdk. Чтобы быть основательным, я сначала обновился до последнего jdk (от здесь для Oracle), который для меня был 8u152. Затем я исправил свой путь в
c:\Program Files\Java\jdk1.8.0_152\bin
(Это было бы немного иначе для 32-разрядной версии.) Затем я подтвердил, что javac -version
действительно вернул 1.8.0_152 (обязательно запустите новый терминал - уже открытый будет помнить старый путь).
И затем работал sbt run
. (Снова вспомнив, что нужно сделать это со свежего терминала, так что путь свежий.)