【发布时间】:2017-09-13 11:29:13
【问题描述】:
我刚刚开始了解 Camel(和 Maven),我有一个非常简单的 Java 示例:
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]
任何想法,问题可能出在哪里?到目前为止,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 中的构建和运行,而不是使用控制台。所以我右键单击项目文件夹并选择“构建项目”。然后我选择了“运行方式”和“Java 应用程序”。 Eclipse 控制台为我提供了预期的 hello-world-output。
为什么它不适用于控制台?
编辑 3:
现在我没有先使用“mvn compile”,而是进入“target\classes”文件夹,然后运行“java package.classname”,而是执行了以下操作:
mvn compile exec:java -Dexec.mainClass=package.classname
它给了我想要的 hello-world-output。
听起来像是类路径问题?如何在没有 maven 的情况下启动示例程序?
【问题讨论】:
-
您的代码看起来不错,因此发布更多 POM 内容可能有助于发现问题。
-
您是否对项目运行了 clean:install 以确保正确构建?
-
我已经在 Eclipse 中运行了几次 Project Clean。够了吗?
-
我现在已经在包含 POM 文件的项目文件夹中执行了“mvn clean”和“mvn clean install”。然后执行“mvn compile”。运行程序,仍然给我同样的异常。
-
也许删除本地 maven 存储库中的骆驼流并重新构建可能会起作用。它可能有问题......最好重新开始。并确保在重建后您可以在 Maven 依赖项下列出的 Eclipse 项目资源管理器中看到它。
标签: java maven apache-camel