$ J'utilise Akka Distribuée avec Java Publish abonner, après this examples de la documentation
Mais chaque fois que je lance mon code je reçois un java.lang.NoClassDefFoundError: scala/Predef$any2stringadd$
Il semble qu'il ne peut pas classer la bibliothèque de scala mais je peux voir la bibliothèque de scala sur l'onglet de dépendances. J'utilise également la même version pour les deux dépendances Akka.
Mes dépendances sur le 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>
Et IntelliJ montre:
C'est le code qui est à l'origine l'exception:
ActorSystem actorSystem = ActorSystemManager.INSTANCE.getActorSystem();
ActorRef actorSubscriber = actorSystem.actorOf(Props.create(TwitterSubscriber.class));
Où ActorSystemManager
est un singl eton de contourner le système des acteurs.
public enum ActorSystemManager {
INSTANCE;
private final ActorSystem actorSystem;
private ActorSystemManager() {
actorSystem = ActorSystem.create("localized_tweets");
}
public ActorSystem getActorSystem() {
return actorSystem;
}
}
Et voici la trace complète de la pile:
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'
Toute aide sur comment puis-je résoudre cette exception?
Je pensais que les dépendances Akka apporteraient la bonne version de la bibliothèque de scala. Merci. – dazito