1

ここ数日、AKKA と Actor Model を理解しようと試みていましたが、メッセージなどを通じてコミュニケーションをとっていますが、コンパイルする単純な HelloWorld プロジェクトだけを入手できるとしたら気が遠くなります。ここに単一の helloWorld.java ファイルがあります...ここに両方の​​クラス (アクター) を含めました...

import akka.actor.Props;
import akka.actor.UntypedActor;
import akka.actor.ActorRef;

public class helloWorld extends UntypedActor {

  @Override
  public void preStart() {
    // create the greeter actor
    final ActorRef greeter =
        getContext().actorOf(Props.create(Greeter.class), "greeter");
    // tell it to perform the greeting
    greeter.tell(Greeter.Msg.GREET, getSelf());
  }

  @Override
  public void onReceive(Object msg) {
    if (msg == Greeter.Msg.DONE) {
      // when the greeter is done, stop this actor and with it the application
      getContext().stop(getSelf());
    } else unhandled(msg);
  }
}

public class Greeter extends UntypedActor {

  public static enum Msg {
    GREET, DONE;
  }

  @Override
  public void onReceive(Object msg) {
    if (msg == Msg.GREET) {
      System.out.println("Hello World!");
      getSender().tell(Msg.DONE, getSelf());
    } else unhandled(msg);
  }

}

ターミナル(Ubunut)で使用しているコマンドは次のとおりです...

java -classpath $AKKA_HOME/lib/scala-library.jar:$AKKA_HOME/lib/akka/akka-actor_2.10-2.2.1.jar:$AKKA_HOME/lib/akka/config-1.0.2.jar akka.Main helloWorld

そして、これが私が得ている例外です...

Exception in thread "main" java.lang.ClassNotFoundException: helloWorld
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:270)
    at akka.actor.ReflectiveDynamicAccess$$anonfun$getClassFor$1.apply(DynamicAccess.scala:67)
    at akka.actor.ReflectiveDynamicAccess$$anonfun$getClassFor$1.apply(DynamicAccess.scala:66)
    at scala.util.Try$.apply(Try.scala:161)
    at akka.actor.ReflectiveDynamicAccess.getClassFor(DynamicAccess.scala:66)
    at akka.Main$.main(Main.scala:32)
    at akka.Main.main(Main.scala)

誰でもアドバイスを提供できますか?

前もって感謝します

4

1 に答える 1

0

使用しているクラス パスには依存関係の jar ファイルのみが含まれており、helloWorld.class (もちろんコンパイルする必要もあります) は含まれていません。使用する場合

javac -classpath $AKKA_HOME/lib/scala-library.jar:$AKKA_HOME/lib/akka/akka-actor_2.10-2.2.1.jar:$‌​AKKA_HOME/lib/akka/config-1.0.2.jar helloWorld.java

次に、現在の作業ディレクトリでそれを見つけます。つまり、「:.」を追加するだけです。クラスパスに追加して機能させます。別の推奨事項は、デフォルトのパッケージを避け、クラスを常に のような名前付きパッケージに入れることですpackage tsume

于 2013-10-05T18:04:32.487 に答える