Java 带码头的阿克卡骆驼抛出NoSuchMethodError:UnsafeUriCharactersEncoder

Java 带码头的阿克卡骆驼抛出NoSuchMethodError:UnsafeUriCharactersEncoder,java,jetty,apache-camel,akka,Java,Jetty,Apache Camel,Akka,我正在尝试运行一个简单的阿克卡骆驼消费者。我创建了一个服务器,它回复uri中的地址(在代码示例中)。当我运行代码时,我得到一个异常。 我不确定我做错了什么,我是否需要以某种方式配置Jetty?如果是,怎么做 我使用的这个Akka示例作为示例,在他们的示例中,uri是用简单的字符串编写的。 () 例外情况: Uncaught error from thread [test-system-akka.actor.default-dispatcher-4] shutting down JVM s

我正在尝试运行一个简单的阿克卡骆驼消费者。我创建了一个服务器,它回复uri中的地址(在代码示例中)。当我运行代码时,我得到一个异常。 我不确定我做错了什么,我是否需要以某种方式配置Jetty?如果是,怎么做

我使用的这个Akka示例作为示例,在他们的示例中,uri是用简单的字符串编写的。 ()

例外情况:

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);
        }
    }
}
我的代码:

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


Guy

在我的例子中,这是由于项目依赖项中使用了多个camel、servlet api和jetty版本造成的。删除重复的API解决了这个问题。从生成路径中删除所有重复的依赖项。

看起来您在运行时未能在类路径上提供所有必需的jar文件。您是正确的,我确实忘记了驼峰核心。请添加一个答案并将其标记为已解决。