Intellij IDEA:Scala 2.10 项目 Java 7,UnsupportedClassVersionError

Intellij IDEA: Scala 2.10 project with Java 7, UnsupportedClassVersionError

我正在尝试编译 Intellij IDEA 中的项目,它使用 Scala 2.10 并需要 Java 7 进行编译。

我正在使用 jenv 工具从命令行进行编译(我已经为 Intellij IDEA 安装了它的插件以防万一)并且在我使用 Java 7 之后 jenv 并使用此行编译 Maven 项目:

jenv exec mvn clean install

一切正常。

然而,当我将 Intellij IDEAScala 插件一起使用时,编译失败。我在 Scala Compiler ServerJava Compiler、项目配置等所有地方都设置了 Java 1.7 设置。失败堆栈跟踪如下:

Error:scalac: Error: org/jetbrains/jps/incremental/messages/BuildMessage$Kind
java.lang.UnsupportedClassVersionError: org/jetbrains/jps/incremental/messages/BuildMessage$Kind
    at org.jetbrains.jps.incremental.scala.local.AbstractCompiler$ClientReporter.log(AbstractCompiler.scala:92)
    at xsbt.DelegatingReporter.info0(DelegatingReporter.scala:39)
    at scala.tools.nsc.reporters.Reporter$$anonfun$error.apply$mcV$sp(Reporter.scala:70)
    at scala.tools.nsc.reporters.Reporter$$anonfun$error.apply(Reporter.scala:70)
    at scala.tools.nsc.reporters.Reporter$$anonfun$error.apply(Reporter.scala:70)
    at scala.tools.nsc.reporters.Reporter.withoutTruncating(Reporter.scala:42)
    at scala.tools.nsc.reporters.Reporter.error(Reporter.scala:70)
    at scala.tools.nsc.Global.globalError(Global.scala:228)
    at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1564)
    at scala.tools.nsc.Global$Run.compileSources(Global.scala:1552)
    at scala.tools.nsc.Global$Run.compile(Global.scala:1661)
    at xsbt.CachedCompiler0.run(CompilerInterface.scala:115)
    at xsbt.CachedCompiler0.run(CompilerInterface.scala:94)
    at xsbt.CompilerInterface.run(CompilerInterface.scala:22)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at sbt.compiler.AnalyzingCompiler.call(AnalyzingCompiler.scala:101)
    at sbt.compiler.AnalyzingCompiler.compile(AnalyzingCompiler.scala:47)
    at sbt.compiler.AnalyzingCompiler.compile(AnalyzingCompiler.scala:41)
    at org.jetbrains.jps.incremental.scala.local.IdeaIncrementalCompiler.compile(IdeaIncrementalCompiler.scala:32)
    at org.jetbrains.jps.incremental.scala.local.LocalServer.compile(LocalServer.scala:26)
    at org.jetbrains.jps.incremental.scala.remote.Main$.make(Main.scala:68)
    at org.jetbrains.jps.incremental.scala.remote.Main$.nailMain(Main.scala:25)
    at org.jetbrains.jps.incremental.scala.remote.Main.nailMain(Main.scala)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at com.martiansoftware.nailgun.NGSession.run(NGSession.java:319)

据我了解,这意味着编译代码 java 版本与尝试 运行 它的版本不匹配。我还看到了为 JetBrains.

创建的 Unable to copile scala anymore 问题

那么,有什么办法可以在 Intellij 中构建这个项目吗?因为我受困于此而无法继续。

这个问题似乎与 Intellij IDEA 2017.1 本身有关,即 bug is already there。我已经尝试下载版本 2016.6.3,它在那里运行良好,没有任何问题。

在阅读了 Yuriy 所链接的错误的新评论后,我相信现在可以在不降级的情况下解决这个问题。

关闭外部 Scala 编译服务器对我有用。可能需要升级 Scala 插件版本。

为了关闭外部 Scala 编译服务器,转到 File->Settings...->Languages & Frameworks->Scala Compile Server 并取消选中 "Use external compile server for scala"

当我使用插件的 Nightly 选项更新 Scala 插件以构建 2017.2.675,然后重新启动 IntelliJ 时出现此选项。

要更新插件,请转到 File->Settings...->Languages & Frameworks->Scala -> Updates,从下拉列表中选择 Nightly -down,点击"Check For Updates",安装然后重启IntelliJ。