【问题标题】:Scala sbt run - "Unsupported major.minor version 52.0"Scala sbt 运行 - “不支持的 major.minor 版本 52.0”
【发布时间】:2016-08-29 01:38:57
【问题描述】:

当我在 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,所以如果有人能就我应该研究什么提供一些建议,我将不胜感激。

【问题讨论】:

    标签: scala sbt


    【解决方案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 命令运行没有任何问题。

    【讨论】:

    • 我在 Eclipse Neon.3 和 Ubuntu 16.04 LTS 上通过 sudo update-alternatives --config java 更新默认 jre 时遇到了类似问题
    • 我错过了与 windows 匹配的 java 版本......这个答案指向了
    • 感谢您发布答案。你应该接受它。回答你自己的问题很好。 stackoverflow.com/help/self-answer
    【解决方案2】:

    我正在使用 Mac 并尝试通过遵循一个简单的 Scala 教程来学习 Scala。我在尝试运行应用程序时收到此错误。

    原因: 我安装的 java 版本是 8。但在我的终端上,我使用的版本是 7。

    修复: 我将java版本更新到最新版本,然后它就可以工作了。

    【讨论】:

      【解决方案3】:

      更新到正确的 java 版本并再次编译。它应该可以正常工作

      【讨论】:

        【解决方案4】:

        我在使用 CentOS-7.6 时遇到了同样的问题,这是我的解决方案:

        1. 在命令行中运行vim /etc/profile,检查你的环境变量以找到jdk版本,将其更改为jdk-1.8。保存并安全退出。 example picture
        2. 运行/usr/sbin/alternatives --config java,选择1.8版本。
        3. 运行/usr/sbin/alternatives --config javac,同样选择version-1.8。
        4. 运行source /etc/profile 使设置生效。

        通过执行这四个步骤,我能够再次运行命令 sbt 而不会出错。sbt picture

        【讨论】:

          【解决方案5】:

          我突然开始在 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 工作了。 (再次记住从一个新的终端执行此操作,因此路径是新鲜的。)

          【讨论】:

            猜你喜欢
            • 2020-10-06
            • 1970-01-01
            • 2018-08-24
            • 1970-01-01
            • 1970-01-01
            • 2017-01-23
            • 2017-06-13
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多