AKKA 2.4.8 / Scala 2.12.0-M5无法启动系统

时间:2016-07-08 15:00:07

标签: scala akka

我正在尝试在项目中使用Scala 2.12.0-M5和AKKA 2.4.7。但是当我尝试启动AKKA时,我得到了这个错误。我也尝试过使用M4。

我确信我必须在设置中遗漏一些内容,因为这显然必须有效。但这几乎就是我使用2.11.8 - 2.4.6。

任何帮助将不胜感激,谢谢!

build.sbt:

name := "AKKA-2.4.8"

version := "1.0"

scalaVersion := "2.12.0-M5"

// https://mvnrepository.com/artifact/com.typesafe.akka/akka-actor_2.11
libraryDependencies += "com.typesafe.akka" % "akka-actor_2.11" % "2.4.8"

代码:

package testing

import akka.actor.ActorSystem

/**
  * Created by on 7/8/16.<br>
  * <br>
  * AkkaActor demonstrates my problem when starting AKKA
  */
object AkkaActorStarter extends App {
  val actorSystem = ActorSystem("testAkka")
}

错误:

[error] (run-main-0) java.lang.NoClassDefFoundError: scala/Product$class 
...
Caused by: java.lang.ClassNotFoundException: scala.Product$class
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at akka.util.Timeout.<init>(Timeout.scala:13)
    at akka.actor.ActorSystem$Settings.<init>(ActorSystem.scala:171)
    at akka.actor.ActorSystemImpl.<init>(ActorSystem.scala:522)
    at akka.actor.ActorSystem$.apply(ActorSystem.scala:142)
    at akka.actor.ActorSystem$.apply(ActorSystem.scala:109)
    at testing.AkkaActorStarter$.delayedEndpoint$testing$AkkaActorStarter$1(AkkaActorStarter.scala:11)
    at testing.AkkaActorStarter$delayedInit$body.apply(AkkaActorStarter.scala:10)
    at scala.Function0.apply$mcV$sp$(Function0.scala:34)
    at scala.Function0.apply$mcV$sp(Function0.scala:34)
    at scala.App.$anonfun$main$1$adapted(App.scala:76)
    at scala.collection.immutable.List.foreach(List.scala:376)
    at scala.App.main$(App.scala:76)
    at scala.App.main(App.scala:74)
    at testing.AkkaActorStarter.main(AkkaActorStarter.scala)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

1 个答案:

答案 0 :(得分:4)

问题是,您使用Scala 2.11(akka-actor_2.11)的akka​​与Scala 2.12。 Scala次要版本不是二进制兼容的,您必须使用为您的精确Scala版本编译的akka​​库,2.12.0-M5:"com.typesafe.akka" % "akka-actor_2.12.0-M5" % "2.4.8"或使用%%,这将使用适当的工件到scalaVersion"com.typesafe.akka" %% "akka-actor" % "2.4.8"