Scala 编译出错 missing or invalid dependency while loading class

使用环境:

  1. windows7
  2. idea 14

软件版本:

  1. Scala 2.11.5
  2. Akka 2.0

其中,配置build.sbt的内容如下:

name := "duqi"

version := "1.0"

scalaVersion := "2.11.5"

resolvers += "Typesafe Repository" at "http://repo.typesafe.com/typesafe/releases/"

libraryDependencies += "com.typesafe.akka" % "akka-actor" % "2.0"

测试代码:

import akka.actor.ActorSystem

object ScalaTest{
  def main(args: Array[String]) {
    val system = ActorSystem()
    println("Hello")
  }
}

错误提示:

  1. Error:scalac: missing or invalid dependency detected while loading class file 'package.class'.
    Could not access type ScalaObject in package scala,
    because it (or its dependencies) are missing. Check your build definition for
    missing or conflicting dependencies. (Re-run with -Ylog-classpath to see the problematic classpath.)
    A full rebuild may help if 'package.class' was compiled against an incompatible version of scala.
  2. Error:scalac: missing or invalid dependency detected while loading class file 'ActorSystem.class'.
    Could not access type ScalaObject in package scala,
    because it (or its dependencies) are missing. Check your build definition for
    missing or conflicting dependencies. (Re-run with -Ylog-classpath to see the problematic classpath.)
    A full rebuild may help if 'ActorSystem.class' was compiled against an incompatible version of scala.

原因猜想:

可能是scala和akka的版本不匹配造成的?
关于这个猜想,我已经试过了,将build.sbt的内容换为:

name := "duqi"

version := "1.0"

scalaVersion := "2.9.1"

resolvers += "Typesafe Repository" at "http://repo.typesafe.com/typesafe/releases/"

libraryDependencies += "com.typesafe.akka" % "akka-actor" % "2.0"

但是发现原来的错误没有了,出现下面这一个错误:

Error:scalac: Error:     org.jetbrains.jps.incremental.scala.remote.ServerException
Error compiling sbt component 'compiler-interface-2.9.1.final-52.0'

at sbt.compiler.AnalyzingCompiler$$anonfun$compileSources$1$$anonfun$apply$2.apply(AnalyzingCompiler.scala:145)

at sbt.compiler.AnalyzingCompiler$$anonfun$compileSources$1$$anonfun$apply$2.apply(AnalyzingCompiler.scala:142)

at sbt.IO$.withTemporaryDirectory(IO.scala:285)

at sbt.compiler.AnalyzingCompiler$$anonfun$compileSources$1.apply(AnalyzingCompiler.scala:142)

at sbt.compiler.AnalyzingCompiler$$anonfun$compileSources$1.apply(AnalyzingCompiler.scala:139)

at sbt.IO$.withTemporaryDirectory(IO.scala:285)

at sbt.compiler.AnalyzingCompiler$.compileSources(AnalyzingCompiler.scala:139)

at sbt.compiler.IC$.compileInterfaceJar(IncrementalCompiler.scala:33)

at org.jetbrains.jps.incremental.scala.local.CompilerFactoryImpl$.org$jetbrains$jps$incremental$scala$local$CompilerFactoryImpl$$getOrCompileInterfaceJar(CompilerFactoryImpl.scala:87)

at org.jetbrains.jps.incremental.scala.local.CompilerFactoryImpl$$anonfun$getScalac$1.apply(CompilerFactoryImpl.scala:44)

at org.jetbrains.jps.incremental.scala.local.CompilerFactoryImpl$$anonfun$getScalac$1.apply(CompilerFactoryImpl.scala:43)

at scala.Option.map(Option.scala:145)

at org.jetbrains.jps.incremental.scala.local.CompilerFactoryImpl.getScalac(CompilerFactoryImpl.scala:43)

at org.jetbrains.jps.incremental.scala.local.CompilerFactoryImpl.createCompiler(CompilerFactoryImpl.scala:22)

at org.jetbrains.jps.incremental.scala.local.CachingFactory$$anonfun$createCompiler$1.apply(CachingFactory.scala:24)

at org.jetbrains.jps.incremental.scala.local.CachingFactory$$anonfun$createCompiler$1.apply(CachingFactory.scala:24)

at org.jetbrains.jps.incremental.scala.local.Cache$$anonfun$getOrUpdate$2.apply(Cache.scala:20)

at scala.Option.getOrElse(Option.scala:120)

at org.jetbrains.jps.incremental.scala.local.Cache.getOrUpdate(Cache.scala:19)

at org.jetbrains.jps.incremental.scala.local.CachingFactory.createCompiler(CachingFactory.scala:23)

at org.jetbrains.jps.incremental.scala.local.LocalServer.compile(LocalServer.scala:22)

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:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:483)

at com.martiansoftware.nailgun.NGSession.run(NGSession.java:319)

请有了解的同学帮我看看~

参考资料:

  1. akka入门指南
  2. Scala Tour
阅读 15.8k
1 个回答

akka 2.0 是两年前的版本,用scala 2.11.5的话 需要akka 2.3.9
Akka Documentation

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进