2014-07-25 2 views
0

J'essaie de lancer un simple consommateur Akka-Camel. J'ai créé un serveur qui répond à l'adresse dans l'uri (dans l'exemple de code). Quand je cours le code, j'obtiens une exception. Je ne suis pas sûr de ce que je fais mal, ai-je besoin de configurer Jetty en quelque sorte? Si c'est le cas, comment?Akka Camel avec Jetty throws NoSuchMethodError: UnsafeUriCharactersEncoder

Cet exemple Akka que j'utilise comme exemple et dans leur exemple l'uri est écrit en chaîne simple. (https://github.com/akka/akka/tree/master/akka-samples/akka-sample-camel-java)

Exception:

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) 
... 
... 

Mon code:

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

Merci,

Guy

+1

On dirait que vous n'avez pas réussi à fournir tous les fichiers jar nécessaires sur le chemin de classe _at runtime_. –

+0

Vous avez raison, j'ai en effet oublié le noyau de chameau. –

+0

Veuillez ajouter une réponse et la marquer comme résolue. –

Répondre

0

En Dans mon cas, cela est dû à plusieurs versions de camel, servlet-api, jetty utilisées dans les dépendances du projet. Suppression des doublons apis résolu le problème. Supprimez toutes les dépendances en double du chemin de génération.