Как я могу использовать Akka Actors в приложении Java? - PullRequest
5 голосов
/ 09 марта 2011

Я хотел бы использовать Актеров Akka в Java.

Я скачал akka-1.0.zip и добавил akka-actor-1.0.jar в свой «Путь сборки» в Eclipse.

Тогда я написал этот актерский класс:

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);
    }
}

Но я получаю ошибки в 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.

Нужно ли мне добавить еще файлы в «Путь сборки» или что я делаю не так? Я не считаю эту документацию полезной.

Обновление: Я добавил scala-library.jar к своему пути сборки, и указанные выше ошибки исчезли. Но я получаю сообщение об ошибке при компиляции и запуске приложения:

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

Вот основной класс, в котором я использую своего актера:

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");
    }

}

Ответы [ 4 ]

2 голосов
/ 09 марта 2011

В вашем файле akka-1.0.zip есть scala-library.jar. Попробуйте добавить его в путь сборки.

Кроме того, внутри zip есть каталог lib_managed, который содержит дополнительные файлы библиотеки. Возможно, также понадобятся некоторые из них.

Чтобы избежать подобных ситуаций, вам следует попробовать Maven. Существует хранилище Akka: http://scalablesolutions.se/akka/repository/se/scalablesolutions/akka/

2 голосов
/ 09 марта 2011

Вы можете найти полный рабочий пример здесь ; это проект Maven, поэтому он автоматически получит для вас зависимости.

1 голос
/ 12 июля 2011

Я вижу эту проблему при использовании Akka в проекте Java в Eclipse с установленной Scala IDE.Проблема исчезает при использовании экземпляра Eclipse без установленной Scala IDE.Возможно, Eclipse сбит с толку двумя библиотеками Scala?

0 голосов
/ 09 марта 2011

Я не знаю актеров Akka, но, похоже, вам нужна поддержка scala (libs на пути сборки).

...