2013-10-04 61 views
1

在過去的幾天裏我一直試圖抓住AKKA和我得到的Actor模型,我通過消息等獲得了交流,但是如果我只能得到一個簡單的HelloWorld項目編譯,這裏的單helloWorld.java文件......我已經包含了兩個類(演員)在這裏......Akka HelloWorld沒有編譯:-(

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) 

任何人都可以提供任何建議嗎?

在此先感謝

+2

你真的認爲它沒有編譯?我認爲它的編譯但沒有運行。 – Mohayemin

+0

對不起,您是對的,使用'Boris the Spiders'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.java do;我得到「你需要提供一個參數:應用程序主管的類」? – user1974297

+0

你忘了傳給akka.Main演員使用的論點:例如 java -classpath akka.Main your.package.name.HelloWorld – user1708042

回答

0

您所使用的類路徑只包含的依賴罐子,而不是你的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