当我使用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,所以如果有人能就我应该研究的内容提供一些建议,我们将不胜感激。
答案 0 :(得分:26)
事实证明,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
命令运行时没有任何问题。
答案 1 :(得分:1)
我正在使用Mac并尝试通过遵循简单的Scala教程来学习Scala。当我尝试运行应用程序时出现此错误。
<强>原因强>: 我安装的java版本是8.但在我的终端上,我使用的版本是7。
<强>修正强>: 我将java版本更新到最新版本,然后就可以了。
答案 2 :(得分:1)
更新以更正java版本并再次编译。它应该工作正常
答案 3 :(得分:1)
我在CentOS-7.6上遇到了同样的问题,这是我的解决方案:
vim /etc/profile
,检查Environment变量以找到jdk版本,并将其更改为jdk-1.8。保存并安全退出。
example picture /usr/sbin/alternatives --config java
,选择版本1.8。/usr/sbin/alternatives --config javac
,也选择版本1.8。source /etc/profile
以使设置生效。通过执行这四个步骤,我能够在没有orror的情况下再次运行sbt命令。sbt picture
答案 4 :(得分:0)
我突然在Windows 10上开始出现此错误。原来我的路径已经以某种方式恢复为指向旧版本的java jdk。为了彻底,我首先升级到最新的jdk(来自here for Oracle),对我而言是8u152。然后我更正了我的路径
c:\Program Files\Java\jdk1.8.0_152\bin
(对于32位版本,这会有点不同。)然后我验证javac -version
确实返回1.8.0_152(确保打开一个新终端 - 已经打开的终端会记住旧路径)
然后sbt run
工作了。 (再次记住要从一个新的终端做到这一点,所以道路是新鲜的。)