构建Intellij Scala插件时出现错误

6
我正在尝试按照以下说明操作:https://confluence.jetbrains.com/display/SCA/Setting+up+Scala+plugin+project+in+IntelliJ+IDEA。我使用的是Idea 14.1.14版本,已下载源代码和downloadIdea。在导入项目后,将项目SDK设置为1.7。不确定上述信息是否足够,但在构建项目时,我遇到了以下错误,请问我做错了什么?
Error:scalac: error while loading Object, Missing dependency 'object scala in compiler mirror', required by /usr/lib/jvm/java-7-oracle/jre/lib/rt.jar(java/lang/Object.class)
Error:scalac: Error: object scala in compiler mirror not found.
scala.reflect.internal.MissingRequirementError: object scala in compiler mirror not found.
    at scala.reflect.internal.MissingRequirementError$.signal(MissingRequirementError.scala:17)
    at scala.reflect.internal.MissingRequirementError$.notFound(MissingRequirementError.scala:18)
    at scala.reflect.internal.Mirrors$RootsBase.getModuleOrClass(Mirrors.scala:53)
    at scala.reflect.internal.Mirrors$RootsBase.getModuleOrClass(Mirrors.scala:66)
    at scala.reflect.internal.Mirrors$RootsBase.getPackage(Mirrors.scala:173)
    at scala.reflect.internal.Definitions$DefinitionsClass.ScalaPackage$lzycompute(Definitions.scala:161)
    at scala.reflect.internal.Definitions$DefinitionsClass.ScalaPackage(Definitions.scala:161)
    at scala.reflect.internal.Definitions$DefinitionsClass.ScalaPackageClass$lzycompute(Definitions.scala:162)
    at scala.reflect.internal.Definitions$DefinitionsClass.ScalaPackageClass(Definitions.scala:162)
    at scala.reflect.internal.Definitions$DefinitionsClass.init(Definitions.scala:1377)
    at scala.tools.nsc.Global$Run.<init>(Global.scala:1229)
    at xsbt.CachedCompiler0$$anon$2.<init>(CompilerInterface.scala:116)
    at xsbt.CachedCompiler0.run(CompilerInterface.scala:116)
    at xsbt.CachedCompiler0.run(CompilerInterface.scala:102)
    at xsbt.CompilerInterface.run(CompilerInterface.scala:27)
    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:102)
    at sbt.compiler.AnalyzingCompiler.compile(AnalyzingCompiler.scala:48)
    at sbt.compiler.AnalyzingCompiler.compile(AnalyzingCompiler.scala:41)
    at org.jetbrains.jps.incremental.scala.local.IdeaIncrementalCompiler.compile(IdeaIncrementalCompiler.scala:29)
    at org.jetbrains.jps.incremental.scala.local.LocalServer.compile(LocalServer.scala:26)
    at org.jetbrains.jps.incremental.scala.remote.Main$.make(Main.scala:62)
    at org.jetbrains.jps.incremental.scala.remote.Main$.nailMain(Main.scala:20)
    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)
Warning:scalac: No 'scala-library*.jar' in module dependencies [compiler_settings]

你设置了 SCALA_HOME 吗? - Abdulrahman
7个回答

13

前往 文件 -> 项目结构 -> 全局库 并添加 Scala SDK。在我的情况下,已经存在两个SDK(在ivy文件夹中)并提供选择。


3

最近我也遇到了一个类似的问题,即使我使用了兼容的Java、sbt和scala SDK版本,但我找到了一些原因,导致我们在将sbt项目导入Intellij时会出现此错误。

  1. 检查scala-SDK是否存在于全局库中,在"文件"->"项目结构"->"全局库"下查找。

请参考下面的截图。

Intellij global library settings

  1. 即使解决了第一个问题,您仍然可能面临这个问题。然后,请查找您已放置在/lib文件夹下的外部依赖项,如果可能,请检查该jar文件的校验和是否正确,并确保其大小正确。这应该可以解决问题。

external libarires

除了上述问题之外,当您在IntelliJ中打开项目时,您可能会遇到代码中的依赖源链接问题。这是因为在"文件"-> "项目模块"-> "模块"下存在其他的根模块。在模块面板中,您将看到projectxxx-src和projectxx-test除了projexctxx-process和projectxx-process-build之外的其他附加模块。因此,请删除projectxx-src和projectxx-test。

Remove additional modules


1

enter image description here

最好还是在这里检查一下。它解决了我自己的构建错误。


1

在使用Scala时,仅应与Java 8 JDK版本一起使用,甚至不应使用更高的JDK版本。


1
我使用了多年带有Scala的更高版本的Java。这是错误的。 - Tim Gautier
1
将“项目SDK”从11.0切换到1.8实际上对我有所帮助。当时我正在使用Scala 2.11。 - Andrei Luksha

1

为了让Scala正常工作,您需要安装Java 8 JDK

请参阅scala网站获取更多信息。


0
在我的情况下,我必须在“项目结构 -> SDK”中指定正确的JDK主目录路径。
由于我的JAVA_HOME变量尚未设置,因此Intellij正在采用不存在的默认值。
将JDK主目录路径替换为JDK的正确路径(在我的情况下,它是以下路径:/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home)。
将'adoptopenjdk-8.jdk'替换为您文件夹的名称(可能是jdk_1.8.0_xxx.jdk)。
希望这有所帮助。

0

请仔细检查JDK兼容性

当我正在使用的Java SDK对于我使用的Scala版本来说太“新”时,我遇到了这个问题。例如,当我的项目使用Scala版本2.11.8时,IntelliJ默认使用Java 12。然而,根据文档,JDK 11所需的最低Scala版本为2.11.12;因此,我通过更改在IntelliJ中使用的JDK为Java 8来解决了这个问题,方法是进入文件-> 项目结构 -> 项目 -> 项目SDK。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接