我刚刚认识骆驼(和Maven),我有这个非常简单的Java例子:Apache的骆驼“不与方案找到的组件:流”
public static void main(String[] args) throws Exception {
CamelContext context = new DefaultCamelContext();
context.addRoutes(new RouteBuilder() {
public void configure() {
from("direct:in").to("stream:out");
}
});
context.start();
ProducerTemplate template = context.createProducerTemplate();
template.sendBody("direct:in", "Hello Text World");
template.sendBody("direct:in", "Hello Bytes World".getBytes());
}
我的Maven POM文件包括:
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-stream</artifactId>
<version>2.19.2</version>
</dependency>
尽管如此,我收到org.apache.camel.FailedToCreateRouteException,因为没有组件发现方案:流线
异常“主” org.apache.camel.FailedToCreateRouteException:无法在以下位置创建路由route1:>>> To [stream:out] < < < route:Route(ro to:没有找到与组件相关的组件:stream at org.apache.camel .model.RouteDefinition.addRoutes(RouteDefinition.java:1298) at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:204) at org.apache.camel.impl.DefaultCamelContext.startRoute(DefaultCamelContext.java :1087) 在org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:3544) 在org.apache.camel.impl.DefaultCamelContext.doStartCamel(DefaultCamelContext.java:3275) 在org.apache.camel .impl.DefaultCamelContext.access $ 000(DefaultCamelContext.java:202) at org.apache.camel.impl.DefaultCamelContext $ 2.call(DefaultCamelContext.java:3093) at org.apache.camel.impl.DefaultCamelContext $ 2.call(DefaultCamelContext.java:3089) at org.apache.camel。 impl.DefaultCamelContext.doWithDefinedClassLoader(DefaultCamelContext.java:3112) 在org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:3089) 在org.apache.camel.support.ServiceSupport.start(ServiceSupport.java: 61) 在org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:3026) 在mavenCamelRiding.binFileStreamToCamel.MainStreamRouter.main(MainStreamRouter.java:37) 引起:org.apache.camel.ResolveEndpointFailedException:无法解析端点:stream:// out由于:没有找到使用scheme:s的组件tream 在org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:729) 在org.apache.camel.util.CamelContextHelper.getMandatoryEndpoint(CamelContextHelper.java:80) 在org.apache.camel.model .RouteDefinition.resolveEndpoint(RouteDefinition.java:219) at org.apache.camel.impl.DefaultRouteContext.resolveEndpoint(DefaultRouteContext.java:112) at org.apache.camel.impl.DefaultRouteContext.resolveEndpoint(DefaultRouteContext.java:118 ) at org.apache.camel.model.SendDefinition.resolveEndpoint(SendDefinition.java:62) at org.apache.camel.model.SendDefinition.createProcessor(SendDefinition.java:56) at org.apache.camel.model .ProcessorDefinition.makeProcessorImpl(ProcessorDefinition.java:549) at org.apache.camel.model.ProcessorDefinition.addRoutes(ProcessorDefinition.java:226) org.apache.camel.model处的org.apache.camel.model.ProcessorDefinition.makeProcessor(ProcessorDefinition.java:510) 。 RouteDefinition.addRoutes(RouteDefinition.java:1295)
任何想法,其中的问题可能是?到目前为止,Google无法帮助我。
编辑1:这里是我的POM文件
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>mavenCamelRiding</groupId>
<artifactId>binFileStreamToCamel</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>binFileStreamToCamel</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-core</artifactId>
<version>2.19.2</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-stream</artifactId>
<version>2.19.2</version>
</dependency>
</dependencies>
</project>
编辑2的其余部分:
它显然有事情做与我建立和启动程序的方式。这让我感到困惑,因为到目前为止我玩过的其他路由选项(jms,activemq,file,bean)没有任何问题。
我现在测试了构建并在Eclipse中运行,而不是使用控制台。所以我右键摆放了项目文件夹并选择了“Build Project”。然后我选择了“Run As”和“Java Application”。 Eclipse控制台为我提供了预期的hello-world-output。
为什么它不能在控制台上工作?
编辑3:
现在代替第一使用 “MVN编译”,移动到 “目标\类” 文件夹中,然后运行的 “java package.classname”,我执行该:
MVN编译exec:java -Dexec.mainClass = package.classname
它给了我想要的hello-world-output。
听起来像一个类路径问题?如何在没有maven的情况下启动示例程序?
您的代码看起来不错,因此发布更多POM内容可能有助于查找问题。 – Tome
您是否在项目上运行clean:install以确保其正确构建? –
我在Eclipse中运行了一个Project Clean几次。够了吗? – numberfourteen