【问题标题】:Apache Camel "No component found with scheme: stream"Apache Camel“没有找到带有方案的组件:流”
【发布时间】: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


【解决方案1】:

现在我有 2 个选项可以在控制台上运行我的示例程序:

第一个选项:

mvn compile exec:java -Dexec.mainClass=package.classname(在 pom.xml 文件夹中)

第二个选项:

  1. mvn 依赖:复制依赖编译(在 pom.xml 文件夹中)
  2. java -classpath ..\dependency*;. package.classname(在文件夹 target\classes 中)

所以这是一个类路径问题。它只是没有解释为什么在前面的示例中 java 能够在没有额外的类路径信息的情况下找到 camel-core 和 camel-jms,但不能找到 camel-stream。

【讨论】:

    【解决方案2】:

    我拿了你的源码并在我的机器上进行了测试,并且能够看到输出,如下所示:

    你好文本世界 你好字节世界

    您的本地 .m2 可能缺少骆驼流 jar。或者您可以删除 .m2\repository\org\apache\camel\camel-stream\2.19.2 下的 camel-stream 文件夹,执行 maven 全新安装并尝试再次运行。

    【讨论】:

    • 我已经从我的 .m2 中删除了 camel-stream 文件夹(并再次尝试完整的 apache 文件夹),通过“mvn clean install”重新下载了所有内容(在文件夹中执行我项目中的 POM 文件)。然后运行“mvn compile”,没有并发症。在 target\classes 文件夹中的控制台中使用 java 命令执行我的程序再次给了我错误。
    猜你喜欢
    • 1970-01-01
    • 2015-01-22
    • 1970-01-01
    • 2017-11-16
    • 2014-11-03
    • 1970-01-01
    • 2018-01-06
    • 2023-03-07
    • 1970-01-01
    相关资源
    最近更新 更多