Scala sbt run - “不支持的major.minor版本52.0”

时间:2016-08-29 01:38:57

标签: scala sbt

当我使用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,所以如果有人能就我应该研究的内容提供一些建议,我们将不胜感激。

5 个答案:

答案 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上遇到了同样的问题,这是我的解决方案:

  1. 在命令行中运行vim /etc/profile,检查Environment变量以找到jdk版本,并将其更改为jdk-1.8。保存并安全退出。 example picture
  2. 运行/usr/sbin/alternatives --config java,选择版本1.8。
  3. 运行/usr/sbin/alternatives --config javac,也选择版本1.8。
  4. 运行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工作了。 (再次记住要从一个新的终端做到这一点,所以道路是新鲜的。)