5 Stimmen

Wie kann ich Akka Actors in einer Java-Anwendung verwenden?

Ich möchte Folgendes verwenden Akka-Akteure in Java.

Ich habe die akka-1.0.zip und fügte hinzu akka-actor-1.0.jar zu meinem "Build Path" in Eclipse.

Dann habe ich diese Actor-Klasse geschrieben:

package com.example;

import akka.actor.UntypedActor;

public class MyActor extends UntypedActor {

    public void onReceive(Object message) throws IllegalArgumentException {
        if (message instanceof String) {
            System.out.println("Received: " + message);
        } else throw new IllegalArgumentException("Unknown message: " + message);
    }
}

Aber ich erhalte Fehler in Eclipse:

The type scala.Option cannot be resolved.
The type scala.Some cannot be resolved.
The type scala.PartialFunction cannot be resolved.
The type scala.ScalaObject cannot be resoled.

Muss ich weitere Dateien zu meinem "Build Path" hinzufügen oder was mache ich falsch? Ich finde die Dokumentation nicht sehr hilfreich.

Aktualisierung: Ich fügte hinzu scala-library.jar zu meinem Build-Pfad und die oben genannten Fehler sind verschwunden. Aber ich erhalte einen Fehler, wenn ich kompilieren und die Anwendung ausführen:

Exception in thread "main" java.lang.NoClassDefFoundError: net/lag/configgy/ConfigMap
    at akka.actor.Actors.actorOf(Actors.java:70)
    at com.example.ActorTest.main(ActorTest.java:9)
Caused by: java.lang.ClassNotFoundException: net.lag.configgy.ConfigMap
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 2 more

Hier ist die Hauptklasse, in der ich meinen Schauspieler verwende:

package com.example;

import akka.actor.ActorRef;
import akka.actor.Actors;

public class ActorTest {

    public static void main(String[] args) {
        ActorRef myActor = Actors.actorOf(MyActor.class);
        myActor.start();
        System.out.println("My Actor started");
    }

}

0 Stimmen

Akka-actor-1.0.jar benötigt eine Reihe von Abhängigkeiten, die Sie hier sehen können: github.com/jboner/akka/blob/v1.0/project/build/ WIE auch immer, in akka master haben wir es jetzt geschafft, die todos Abhängigkeiten (außer scala-library.jar) für akka-actor.jar

0 Stimmen

@Viktor: Danke, jetzt mit akka-actor-1.1-M1.jar Ich musste nur noch die scala-library.jar (8MB). Allerdings habe ich jetzt getestet akka-typed-actor-1.1-M1.jar und habe ein ähnliches Problem: java.lang.NoClassDefFoundError: org/codehaus/aspectwerkz/joinpoint/CodeRtti Welche Bibliotheken muss ich jetzt noch hinzufügen?

0 Stimmen

Oder es funktioniert wieder nicht so gut: stackoverflow.com/questions/5829909/

2voto

Peter Knego Punkte 79484

In Ihrem akka-1.0.zip Datei befindet sich scala-library.jar . Versuchen Sie, es dem Build-Pfad hinzuzufügen.

Außerdem gibt es eine lib_managed Verzeichnis innerhalb der Zip-Datei, das weitere Bibliotheksdateien enthält. Möglicherweise werden auch einige von ihnen benötigt.

Um diese Art von Situationen zu vermeiden, sollten Sie maven ausprobieren. Es gibt ein Akka-Repository: http://scalablesolutions.se/akka/repository/se/scalablesolutions/akka/

0 Stimmen

Danke, ich habe die scala-library.jar zu meinem Build-Pfad, aber ich habe immer noch einige Fehler in meiner Anwendung. Siehe mein Update.

0 Stimmen

Es gibt eine configgy-2.0.2-nologgy.jar in dem von mir erwähnten Verzeichnis.

0 Stimmen

Entweder Sie fügen alle Jars in diesem Verzeichnis zu Ihrem Build-Pfad hinzu oder Sie verwenden Maven, das alle Abhängigkeiten automatisch auflöst.

2voto

Jesper Punkte 193903

Ein vollständiges, funktionierendes Beispiel finden Sie unter aquí Es handelt sich um ein Maven-Projekt, so dass es die Abhängigkeiten automatisch für Sie besorgen wird.

1voto

Dzhaughn Punkte 134

Ich sehe dieses Problem bei der Verwendung von Akka in einem Java-Projekt in Eclipse mit installierter Scala-IDE. Das Problem verschwindet, wenn eine Eclipse-Instanz ohne installierte Scala-IDE verwendet wird. Eclipse ist vielleicht verwirrt durch zwei Scala-Bibliotheken um?

0voto

Thomas Punkte 84982

Ich kenne Akka-Akteure nicht, aber es scheint, dass Sie auch Scala-Unterstützung (Libs auf dem Build-Pfad) benötigen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X