2017-10-18 15 views
1

私のプログラムは、XMLファイル形式をJSONファイル形式に変換する必要があります。イムは、マーシャルコマンドを使用しようとしているが、私はエラーを取得:XML to Json with Camel

org.apache.camel.FailedToCreateRouteExceptionスレッドで

例外「メイン」:>>> 元帥[ORG:でルート route1の作成に失敗しました。 [ファイル:リソース/受信トレイ] - > [Marshal [org.ap ...]がデータ形式のために作成されました。 'xmljson'は を作成できませんでした。データ形式が有効であることを確認し、関連するキャメル コンポーネントは、によって引き起こされるクラスパス

上に存在している: java.lang.IllegalArgumentExceptionが:データフォーマット「xmljson」 を作成できませんでした。データ形式が有効であると

Javaコードが

package route; 

import org.apache.camel.CamelContext; 
import org.apache.camel.builder.RouteBuilder; 
import org.apache.camel.impl.DefaultCamelContext; 
import org.apache.camel.model.dataformat.XmlJsonDataFormat; 
import org.apache.camel.spi.DataFormat; 
import org.apache.log4j.BasicConfigurator; 

public class CopyToJsonRoute { 

    public static void main(String args[]) throws Exception { 
     // Log 4j 
     BasicConfigurator.configure(); 

     // create CamelContext 
     CamelContext context = new DefaultCamelContext(); 

     // add our route to the CamelContext 
     context.addRoutes(new RouteBuilder() { 
      public void configure() { 
       // http://www.yr.no/place/Norway/Oslo/Oslo/Oslo/forecast.xml 

       XmlJsonDataFormat xmlJsonFormat = new XmlJsonDataFormat(); 
       xmlJsonFormat.setForceTopLevelObject(true); 
       from("file:resource/inbox") 
         .marshal(xmlJsonFormat) 
         .to("file:src/main/resources/data/output?autoCreate=true"); 



      } 
     }); 

     // start the route and let it do its work 
     context.start(); 
     Thread.sleep(10000); 

     // stop the CamelContext 
     context.stop(); 
    } 
} 

ポンポンあなたが追加する必要があり

<?xml version="1.0" encoding="UTF-8"?> 
<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>com.yourdomain.subdomain</groupId> 
    <artifactId>copy-to-json</artifactId> 
    <version>1.0-SNAPSHOT</version> 


    <dependencies> 

     <!-- https://mvnrepository.com/artifact/org.apache.camel/camel-core --> 
     <dependency> 
      <groupId>org.apache.camel</groupId> 
      <artifactId>camel-core</artifactId> 
      <version>2.20.0</version> 
     </dependency> 

     <!-- https://mvnrepository.com/artifact/org.apache.camel/camel-jackson --> 
     <dependency> 
      <groupId>org.apache.camel</groupId> 
      <artifactId>camel-jackson</artifactId> 
      <version>2.20.0</version> 
     </dependency> 

     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-log4j12</artifactId> 
      <version>1.8.0-alpha2</version> 
     </dependency> 

     <!-- https://mvnrepository.com/artifact/org.apache.camel/camel-jms --> 
     <dependency> 
      <groupId>org.apache.camel</groupId> 
      <artifactId>camel-jms</artifactId> 
      <version>2.20.0</version> 
     </dependency> 

     <!-- https://mvnrepository.com/artifact/xom/xom --> 
     <dependency> 
      <groupId>xom</groupId> 
      <artifactId>xom</artifactId> 
      <version>1.2.5</version> 
     </dependency> 



    </dependencies> 
</project> 

答えて

2

ファイル関連したキャメル コンポーネントがクラスパス上に存在することを確認してくださいcamel-xmljsonをMavenのpomファイルに依存するように

<dependency> 
     <groupId>org.apache.camel</groupId> 
     <artifactId>camel-xmljson</artifactId> 
     <version>2.20.0</version> 
    </dependency>