2011-04-29 5 views
2

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.jaraspectwerkz-core-2.0.jar을 빌드 경로에 추가했습니다.Java 응용 프로그램에서 TypedActor를 사용하려면 어떻게해야합니까?

사용자 지정 생성자와 함께 TypedActor를 사용하려고합니다.

는하지만 지금은 컴파일시 에러가납니다

public interface BaseService { 

    public void testData(String str, int num); 
} 

그리고 : 서비스에 대한

interface

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

여기
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 내 코드입니다 테스트 클래스 :

그것은 더 스칼라처럼 보이는,

Service service = TypedActor.newInstance(classOf[Service], 
             new TypedActorFactory() { 
    public TypedActor create() { 
    return new ServiceWithConstructorArgsImpl("someString", 500L)); 
}); 

하지만 classOf[Service] 자바이라고 생각하지 않습니다 예에서

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

} 

그들은 물품.

맞춤 생성자를 사용하여 TypedActor을 어떻게 구현할 수 있습니까?

답변

3

내가 알 수있는 한 귀하의 코드는 정확합니다. 가 아닌 기본 생성자와 자바의 TypedActor를 인스턴스화하려면 사용해야합니다

BaseService service = TypedActor.newInstance(BaseService.class, 
                new TypedActorFactory() { 
      public TypedActor create() { 
       return new BaseActor("someString", 12); 
      } 
     }); 

는 사실, 공식 문서는 오타가 포함되어 있습니다.

aspectwerkz-2.2.3을 사용해 볼 수 있습니까? 나는 당신의 코드를 시도했고 그것은 나를 위해 일한다. 유일한 차이점은 내가 사용중인 aspectwerkz의 버전입니다. 이 좋아 보인다,

<dependency org="org.codehaus.aspectwerkz" name="aspectwerkz" rev="2.2.3" force="true" conf="compile->compile(*),master(*);runtime->runtime(*)"/> 
<dependency org="aopalliance" name="aopalliance" rev="1.0" force="true" conf="compile->compile(*),master(*);runtime->runtime(*)"/> 
<dependency org="org.guiceyfruit" name="guice-all" rev="2.0" force="true" conf="compile->compile(*),master(*);runtime->runtime(*)"/> 
<dependency org="se.scalablesolutions.akka" name="akka-stm" rev="1.1-M1" force="true" conf="compile->compile(*),master(*);runtime->runtime(*)"/> 
<dependency org="org.scala-lang" name="scala-library" rev="2.9.0.RC1" force="true" conf="compile->compile(*),master(*);runtime->runtime(*)"/> 
+0

감사 :

또한, 이러한 akka 형식의 배우 1.1-M1에 대한 종속성을 참고하시기 바랍니다. 나는 오직 최신의 reales에서 AspectWerkz 2.0을 찾을 수있다 : http://aspectwerkz.codehaus.org/releases.html 어디에서 2.2.3을 찾을 수 있는가? 다른 종속성을 추가하려고 시도했지만 도움이되지 않았습니다. – Jonas

+1

http://akka.io/repository/org/codehaus/aspectwerkz/aspectwerkz/2.2.3/ –

+0

감사합니다. 이제 작동 중입니다! – Jonas

관련 문제