2017-09-13 14 views
1

私はキャメル(と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] < < <ルート:ルート(ro :なしコンポーネントが見つかりません:ストリーム at org.apache.camel org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:204)のの場合、 :1087) org.apache.camelでorg.apache.camel.impl.DefaultCamelContext.startRouteDefinitions org.apache.camel.impl.DefaultCamelContext.doStartCamel(DefaultCamelContext.java:3275で(DefaultCamelContext.java:3544) ) で.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。 org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:3089) (org.apache.camel.support.ServiceSupport.start(ServiceSupport.java: org.apache.camel.ResolveEndpointFailedException:61)mavenCamelRiding.binFileStreamToCamel.MainStreamRouter.main(MainStreamRouter.java:37) でorg.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:3026) に起因します。エンドポイントの解決に失敗しました:stream:// out outのために:scheme:sでコンポーネントが見つかりませんat org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:729) at org.apache.camel.util.CamelContextHelper.getMandatoryEndpoint(CamelContextHelper.java:80) at 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) ) (org.apache.camel.model.SendDefinition.java:62) .ProcessorDefinition.makeProcessorImpl(ProcessorDefinition.java:549) at org.apache.camel.model.ProcessorDefinition.makeProcessor(ProcessorDefinition.java:510) at org.apache.camel.model.ProcessorDefinition.addRoutes(ProcessorDefinition.java:226) at org.apache.camel.model。 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コンソールは私に、期待される世界的な出力を与えます。

なぜコンソールで動作しないのですか?

編集3:今

代わりに最初の使用の "ターゲット\クラス" フォルダに移動し、 "Javaのpackage.classname" を実行し、 "MVNをコンパイルする"、私はこれを実行:

MVNコンパイルexec:java -Dexec.mainClass = package.classname

そして、私が望んでいたこんにちは世界の出力を与えます。

音がクラスパスの問題のようですか?どうすればmavenなしでサンプルプログラムを起動できますか?

+0

あなたはコードがOKですので、POMの内容を投稿すると問題を見つけるのに役立ちます。 – Tome

+0

プロジェクトにclean:installを実行して、正しくビルドされていることを確認しましたか? –

+0

Eclipseで何回かProject Cleanを実行しました。それで十分ですか? – numberfourteen

答えて

0

今、私は、コンソール上の私の例のプログラムを実行するための2つのオプションがあります:

最初のオプション:

MVN execをコンパイルします。java -Dexec.mainClass = package.classname(のpom.xmlを持つフォルダ内)を

番目のオプション:

  1. MVN依存性:コピー-依存関係は(のpom.xmlでフォルダ内)をコンパイル
  2. のjava -classpath .. \ dependency *; package.classname(フォルダターゲット\ classes)

これはクラスパスの問題でした。以前の例では、Javaがcamel-coreとcamel-jmsを追加のクラスパス情報なしで見つけることができたが、なぜならcamel-streamでは見つからなかった理由だけでは説明しない。

0

私はあなたのソースを取って、私のマシン上でテストされ、以下のように、出力を見ることができた:あなたの地元の.m2はラクダが欠落している可能性があります

のHelloテキスト世界 こんにちはバイト・ワールドストリームジャー。または、.m2 \ repository \ org \ apache \ camel \ camel-stream \ 2.19.2の下にあるcamel-streamフォルダを削除し、mavenのクリーンインストールを行い、もう一度これを実行してみてください。

+0

私の.m2からcamel-streamフォルダを削除しました(2回目には完全なapacheフォルダも試しています)、 "mvn clean install"(プロジェクトのPOMファイルのあるフォルダで実行されたもの) 。その後、「mvn compile」を合併症なしに実行しました。コンソールのtarget \ classesフォルダにあるjavaコマンドでプログラムを実行すると、エラーが再び表示されました。 – numberfourteen

関連する問題