2014-07-25 4 views
0

나는 간단한 Akka-Camel 소비자를 실행하려고합니다. uri의 주소에 응답하는 서버를 만들었습니다 (코드 예제에서). 코드를 실행하면 예외가 발생합니다. 내가 뭘 잘못하고 있는지 모르겠다. 어떻게 든 부두를 구성해야합니까? 그렇다면 어떻게?방파제가있는 Akka Camel NoSuchMethodError : UnsafeUriCharactersEncoder

이 Akka 샘플은 예제로 사용하고 있으며 예제에서는 uri가 간단한 문자열로 작성되어 있습니다. (https://github.com/akka/akka/tree/master/akka-samples/akka-sample-camel-java)

예외 :

Uncaught error from thread [test-system-akka.actor.default-dispatcher-4] shutting down  JVM since 'akka.jvm-exit-on-fatal-error' is enabled for ActorSystem[test-system] 
java.lang.NoSuchMethodError: org.apache.camel.util.UnsafeUriCharactersEncoder.encodeHttpURI(Ljava/lang/String;)Ljava/lang/String; 
at org.apache.camel.component.jetty.JettyHttpComponent.createEndpoint(JettyHttpComponent.java:169) 
at org.apache.camel.impl.DefaultComponent.createEndpoint(DefaultComponent.java:91) 
at org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:461) 
at org.apache.camel.util.CamelContextHelper.getMandatoryEndpoint(CamelContextHelper.java:50) 
at org.apache.camel.model.RouteDefinition.resolveEndpoint(RouteDefinition.java:186) 
... 
... 

내 코드 :

public static void main(String[] args) { 
    ActorSystem system = ActorSystem.create("test-system"); 
    ActorRef historyActor = system.actorOf(Props.create(CamelActor.class)); 
} 


public class CamelActor extends UntypedConsumerActor { 
    private String uri; 
    public CamelActor() { this.uri = "jetty:http://0.0.0.0:9000/mymain?myparam=true"; } 

    @Override 
    public String getEndpointUri() { return uri; } 

    @Override 
    public void onReceive(Object message) throws Exception { 
     if (message instanceof CamelMessage) { 
      CamelMessage camelMessage = (CamelMessage) message; 
      System.out.println("==>"+camelMessage.toString()); 
     } else { 
      unhandled(message); 
     } 
    } 
} 

감사합니다,

가이

+1

클래스 경로 _at runtime_에 필요한 모든 jar 파일을 제공하지 못한 것 같습니다. –

+0

당신이 맞습니다, 나는 정말로 낙타의 핵심을 잊어 버렸습니다. –

+0

답변을 추가하고 해결 된 것으로 표시하십시오. –

답변

0

에서 내 경우에는 다중 낙타, servlet-api, jetty 버전이 프로젝트의 종속성에 사용되기 때문입니다. duplicate api를 제거하면 문제가 해결되었습니다. 빌드 경로에서 모든 중복 종속성을 제거하십시오.

관련 문제