0
我試圖運行一個簡單的Akka駱駝消費者。我創建了一個服務器來回復uri中的地址(在代碼示例中)。當我運行代碼時,我得到一個異常。 我不知道我做錯了什麼,我需要以某種方式配置Jetty嗎?如果是這樣,怎麼樣?Akka駱駝與碼頭拋出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);
}
}
}
謝謝,
蓋伊
看起來您無法在類路徑_at runtime_上提供所有必需的jar文件。 –
你是對的,我的確忘了駱駝核心。 –
請添加答案並將其標記爲已解決。 –