混合Scala库提供了akka-actors.jar和特定于应用程序的版本

时间:2014-10-28 16:37:04

标签: scala akka

以下SOF解释了为什么akka相关方法未找到异常可能发生:TL; DR scala引导加载程序首先在类路径中放置scala库版本的akka​​-actors

RemoteActorRefProvider ClassNotFound

但是,只需删除scala库版本而使用自定义版本会导致其他问题:

14/10/28 09:30:23 INFO spark.SecurityManager: SecurityManager: authentication disabled; ui acls disabled; users with view permissions: Set(steve); users with modify permissions: Set(steve)
java.lang.NoSuchMethodError: com.typesafe.config.Config.getDuration(Ljava/lang/String;Ljava/util/concurrent/TimeUnit;)J
    at akka.util.Helpers$ConfigOps$.akka$util$Helpers$ConfigOps$$getDuration$extension(Helpers.scala:125)

所以目前尚不清楚处理自定义akka-actor jar的正确方法是什么。

2 个答案:

答案 0 :(得分:1)

这方面的解决方法有点令人惊讶。 scala 解释器不是的方式。而是回到(鼓声......) java 解释器来运行(是的scala!)程序。

原因是scala解释器添加了各种东西 - 包括akka类到引导类路径中。显然没有可行的方法。

要使用java运行,我们需要在类路径中包含$ SCALA_home / lib / *。在那之后 - 它运作得很好。

答案 1 :(得分:0)

请看这个JIRA。我认为spark-core 1.3.1软件包包含了不正确的类型安全配置API。 https://issues.apache.org/jira/browse/SPARK-9441 尝试使用maven或等效的gradle,sbt dependencies

<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.10</artifactId>
<exclusions>
  <exclusion>
   <artifactId>config</artifactId>
   <groupId>com.typesafe</groupId>
  </exclusion>
 </exclusions>
</dependency>

<dependency>
 <groupId>com.typesafe</groupId>
 <artifactId>config</artifactId>
 <version>1.2.1</version>
</dependency>