2013-10-04 4 views
1

지난 며칠 동안 AKKA와 그립을 얻으려고 노력하고있는 Actor 모델을 통해 메시지 등을 통해 의사 소통을 얻지 만 단순한 HelloWorld 프로젝트를 얻을 수 있다면 나는 망할 것입니다. 컴파일 할 수 있습니다. 여기에 하나의 helloWorld.java 파일의 ... 나는 두 클래스 (배우) 여기에 ... 여기 Akka HelloWorld Not Compiling :-(

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) 

누구든지 조언을 해줄 수 있습니까? (물론 당신은 또한 컴파일 할 필요가) 아닌 helloWorld.class 사용하고있는 클래스 패스에만 의존 항아리가 포함되어 사전

+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로 전달하는 것을 잊었습니다. 사용할 액터의 인수를 사용하십시오. 예 : java -classpath akka.Main your.package.name.HelloWorld – user1708042

답변

0

에서

감사합니다. 당신이 다음

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과 같은 명명 된 패키지에 넣는 것입니다.