java.lang.NoClassDefFoundError:scala/Predef$any2stringad$

java.lang.NoClassDefFoundError:scala/Predef$any2stringad$,java,scala,maven,akka,akka-cluster,Java,Scala,Maven,Akka,Akka Cluster,我使用的是Akka分布式发布订阅Java,如下所示 但是每当我运行代码时,我都会得到一个java.lang.NoClassDefFoundError:scala/Predef$any2stringad$ 它似乎无法对scala库进行归档,但我可以在dependencies选项卡上看到scala库。对于两个Akka依赖项,我也使用相同的版本 我对pom.xml的依赖关系: <dependencies> <dependency> <groupId

我使用的是Akka分布式发布订阅Java,如下所示

但是每当我运行代码时,我都会得到一个
java.lang.NoClassDefFoundError:scala/Predef$any2stringad$

它似乎无法对scala库进行归档,但我可以在dependencies选项卡上看到scala库。对于两个Akka依赖项,我也使用相同的版本

我对pom.xml的依赖关系:

<dependencies>
    <dependency>
        <groupId>org.twitter4j</groupId>
        <artifactId>twitter4j-core</artifactId>
        <version>[4.0,)</version>
    </dependency>
    <dependency>
        <groupId>org.twitter4j</groupId>
        <artifactId>twitter4j-stream</artifactId>
        <version>[4.0,)</version>
    </dependency>
    <dependency>
        <groupId>org.apache.kafka</groupId>
        <artifactId>kafka_2.10</artifactId>
        <version>0.8.2.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.zookeeper</groupId>
        <artifactId>zookeeper</artifactId>
        <version>3.4.6</version>
    </dependency>
    <dependency>
        <groupId>org.apache.storm</groupId>
        <artifactId>storm-core</artifactId>
        <version>0.10.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.storm</groupId>
        <artifactId>storm-kafka</artifactId>
        <version>0.10.0</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.6.4</version>
    </dependency>
    <dependency>
        <groupId>com.typesafe.akka</groupId>
        <artifactId>akka-actor_2.11</artifactId>
        <version>2.4.1</version>
    </dependency>
    <dependency>
        <groupId>com.typesafe.akka</groupId>
        <artifactId>akka-cluster-tools_2.11</artifactId>
        <version>2.4.1</version>
    </dependency>
</dependencies>
其中,
ActorSystemManager
是在actor系统中传递的单例

public enum ActorSystemManager {
    INSTANCE;

    private final ActorSystem actorSystem;

    private ActorSystemManager() {
        actorSystem = ActorSystem.create("localized_tweets");
    }

    public ActorSystem getActorSystem() {
        return actorSystem;
    }
}
下面是完整的堆栈跟踪:

Connected to the target VM, address: '127.0.0.1:51608', transport: 'socket'
Exception in thread "main" java.lang.NoClassDefFoundError: scala/Predef$any2stringadd$
    at akka.actor.RootActorPath.<init>(ActorPath.scala:273)
    at akka.event.Logging$StandardOutLogger.<init>(Logging.scala:800)
    at akka.event.Logging$.<init>(Logging.scala:821)
    at akka.event.Logging$.<clinit>(Logging.scala)
    at akka.event.LoggingBus$class.setUpStdoutLogger(Logging.scala:74)
    at akka.event.LoggingBus$class.startStdoutLogger(Logging.scala:90)
    at akka.event.EventStream.startStdoutLogger(EventStream.scala:28)
    at akka.actor.ActorSystemImpl.<init>(ActorSystem.scala:613)
    at akka.actor.ActorSystem$.apply(ActorSystem.scala:143)
    at akka.actor.ActorSystem$.apply(ActorSystem.scala:110)
    at akka.actor.ActorSystem$.create(ActorSystem.scala:58)
    at akka.actor.ActorSystem.create(ActorSystem.scala)
    at com.dazito.twitter.akka.ActorSystemManager.<init>(ActorSystemManager.java:16)
    at com.dazito.twitter.akka.ActorSystemManager.<clinit>(ActorSystemManager.java:11)
    at com.dazito.twitter.Main.main(Main.java:36)
Caused by: java.lang.ClassNotFoundException: scala.Predef$any2stringadd$
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 15 more
Disconnected from the target VM, address: '127.0.0.1:51608', transport: 'socket'
连接到目标VM,地址:'127.0.0.1:51608',传输:'socket'
线程“main”java.lang.NoClassDefFoundError中出现异常:scala/Predef$any2stringad$
在akka.actor.RootActorPath。(ActorPath.scala:273)
在akka.event.Logging$StandardOutLogger。(Logging.scala:800)
在akka.event.Logging$(Logging.scala:821)
在akka.event.Logging$(Logging.scala)
在akka.event.LoggingBus$class.setUpStdoutLogger(Logging.scala:74)
在akka.event.LoggingBus$class.startStdoutLogger(Logging.scala:90)
在akka.event.EventStream.startStdoutLogger(EventStream.scala:28)
在akka.actor.ActorSystemImpl.(ActorSystem.scala:613)
在akka.actor.ActorSystem$.apply上(ActorSystem.scala:143)
在akka.actor.ActorSystem$.apply(ActorSystem.scala:110)
在akka.actor.ActorSystem$.create上(ActorSystem.scala:58)
在akka.actor.ActorSystem.create(ActorSystem.scala)上
位于com.dazito.twitter.akka.ActorSystemManager。(ActorSystemManager.java:16)
位于com.dazito.twitter.akka.ActorSystemManager。(ActorSystemManager.java:11)
位于com.dazito.twitter.Main.Main(Main.java:36)
原因:java.lang.ClassNotFoundException:scala.Predef$any2stringadd$
位于java.net.URLClassLoader.findClass(URLClassLoader.java:381)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:424)
位于sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 还有15个
已断开与目标VM的连接,地址:'127.0.0.1:51608',传输:'socket'

有关于如何解决此异常的帮助吗?

将您的scala库更新为
2.11
版本。

您有相互冲突的依赖项:
kafka_2.10
需要scala 2.10,而
akka-actor_2.11
需要scala 2.11,并且库不兼容二进制文件。改用《卡夫卡2.11》。(虽然你已经接受了另一个答案,但如果你不改变卡夫卡的依赖关系,你很可能会遇到更多类似的问题。)

Maven帮不了你,因为它不知道库的Scala版本后缀约定,也不专门处理
Scala库
。所以它没有注意到冲突。如果您有Scala依赖项,您甚至可能希望对Java项目使用SBT;或使用

<properties><scala.version>2.11</scala.version></properties>
...
kafka_${scala.version}
...
akka-actor_${scala.version}
2.11
...
卡夫卡${scala.version}
...
akka-actor_${scala.version}

我认为Akka依赖项会带来正确的scala库版本。谢谢
<properties><scala.version>2.11</scala.version></properties>
...
kafka_${scala.version}
...
akka-actor_${scala.version}