我試着按照Typed Actors (Java)上的例子在Java中實現TypedActor
。但我很掙扎。我添加了akka-actor-1.1-M1.jar
,akka-typed-actor-1.1-M1.jar
,scala-library.jar
,但這還不夠。我在Eclipse中遇到錯誤,因此我還將aspectwerkz-2.0.jar
和aspectwerkz-core-2.0.jar
添加到我的構建路徑中。如何在Java應用程序中使用TypedActor?
我嘗試使用帶有自定義構造函數的TypedActor。
但現在我在編譯時出現錯誤:
Exception in thread "main" java.lang.NoSuchMethodError: org.codehaus.aspectwerkz.proxy.Proxy.newInstance([Ljava/lang/Class;[Ljava/lang/Object;ZZ)Ljava/lang/Object;
at akka.actor.TypedActor$.newInstance(TypedActor.scala:596)
at akka.actor.TypedActor$.newInstance(TypedActor.scala:634)
at akka.actor.TypedActor.newInstance(TypedActor.scala)
at com.example.actor.ActorTest.main(ActorTest.java:12)
這裏是我的BaseActor
代碼:
import akka.actor.TypedActor;
public class BaseActor extends TypedActor implements BaseService {
private String str;
private int num;
public BaseActor(String str, int num) {
this.str = str;
this.num = num;
System.out.println("booted");
}
public void testData(String str, int num) {
System.out.println(this.str + " " + this.num);
System.out.println(str + " " + num);
}
}
我interface
的服務:
public interface BaseService {
public void testData(String str, int num);
}
而且一測試等級:
import akka.actor.TypedActor;
import akka.actor.TypedActorFactory;
public class ActorTest {
public static void main(String[] args) {
BaseService service = TypedActor.newInstance(BaseService.class,
new TypedActorFactory() {
public TypedActor create() {
return new BaseActor("someString", 12);
}
});
service.testData("Hello", 6);
}
}
在這個例子中,他們寫道:
Service service = TypedActor.newInstance(classOf[Service],
new TypedActorFactory() {
public TypedActor create() {
return new ServiceWithConstructorArgsImpl("someString", 500L));
});
但我不認爲classOf[Service]
是Java,它看起來更像斯卡拉。
如何使用自定義構造函數實現TypedActor
?
謝謝,這看起來不錯。我只能在最新的版本中找到AspectWerkz 2.0:http://aspectwerkz.codehaus.org/releases.html哪裏可以找到2.2.3?我試圖現在添加其他依賴關係,但它沒有幫助。 – Jonas 2011-04-29 09:40:09
http://akka.io/repository/org/codehaus/aspectwerkz/aspectwerkz/2.2.3/ – 2011-04-29 09:47:33
謝謝,現在工作! – Jonas 2011-04-29 09:49:21