Я использую Akka Распределенная Опубликовать Подписка с Java, следуя this examples из документации
Но всякий раз, когда я запускаю мой код я получаю java.lang.NoClassDefFoundError: scala/Predef$any2stringadd$
It похоже, что он не может архивировать библиотеку scala, но я вижу библиотеку 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>
И IntelliJ показывает:
Это код, который вызывает исключение:
ActorSystem actorSystem = ActorSystemManager.INSTANCE.getActorSystem();
ActorRef actorSubscriber = actorSystem.actorOf(Props.create(TwitterSubscriber.class));
Где ActorSystemManager
является сингл eton, чтобы пройти по актерской системе.
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'
Любая помощь на том, как я могу решить это исключение?
Я думал, что зависимости от Akka приведут к правильной версии библиотеки scala. Благодарю. – dazito