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
On dirait que vous n'avez pas réussi à fournir tous les fichiers jar nécessaires sur le chemin de classe _at runtime_. –
Vous avez raison, j'ai en effet oublié le noyau de chameau. –
Veuillez ajouter une réponse et la marquer comme résolue. –