2014-02-05 21 views
6

我在使用Jackson JSON庫與駱駝時遇到問題。 唯一的例外是:使用Jackson JSON庫與駱駝的異常

FailedToCreateRouteException: Failed to create route... because of Data format 'json-jackson' could not be created. Ensure the data format is valid and the associated Camel component is present on the classpath 

這裏是classpath中通知的開頭是傑克遜庫是否有:

<<< camel-maven-plugin:2.9.0:run (default-cli) @ portlistener <<< 

--- camel-maven-plugin:2.9.0:run (default-cli) @ portlistener --- 
Classpath = [file:/C:/Users/andrew.b-ext/Workspace/portlistener/target/classes/, file:/C:/Users/andrew.b-ext/.m2/repository/org/codehaus/jackson/jackson-asl/1.9.13/jackson-core-asl-1.9.13.jar, file:/C:/Users/andrew.b-ext/.m2/repository/org/codehaus/jackson/jackson-mapper-asl/1.9.13/jackson-mapper-asl-1.9.13.jar, file:/C:/Users/andrew.b-ext/.m2/repository/org/codehaus/jackson/jackson-jaxrs/1.9.13/jackson-jaxrs-1.9.13.jar, ...snip... 

我POM具有傑克遜:

<properties> 
    <camel.version>2.12.2</camel.version> 
    <cxf.version>2.7.8</cxf.version> 
    <activemq.version>5.6.0</activemq.version> 
</properties> 

<dependencies> 
    <dependency> 
    <groupId>org.codehaus.jackson</groupId> 
    <artifactId>jackson-core-asl</artifactId> 
    <version>1.9.13</version> 
    </dependency> 
    <dependency> 
    <groupId>org.codehaus.jackson</groupId> 
    <artifactId>jackson-mapper-asl</artifactId> 
    <version>1.9.13</version> 
    </dependency> 
    <dependency> 
    <groupId>org.codehaus.jackson</groupId> 
    <artifactId>jackson-jaxrs</artifactId> 
    <version>1.9.13</version> 
    </dependency> 

這裏是我的定義Dataformat對象:

<bean id="jsonDataformat" class="org.apache.camel.model.dataformat.JsonDataFormat"> 
    <property name="unmarshalType" value="java.util.Map" /> 
    <property name="library" value="Jackson"></property> 
</bean> 

我試圖改變jsonDataformat聲明:

<camel:dataFormats> 
      <camel:json id="jsonDataformat" library="Jackson"/> 
</camel:dataFormats> 

當我這樣做,我得到一個不同的錯誤:

Configuration problem: Cannot locate BeanDefinitionParser for element [dataFormats] 

有人能看到我在做什麼錯?

感謝,

安德魯 整個pom.xml的

<?xml version="1.0" encoding="UTF-8"?> 

http://maven.apache.org/maven-v4_0_0.xsd「>

<modelVersion>4.0.0</modelVersion> 

<!--<parent> <artifactId>core</artifactId> <groupId>com.xxxx.clinical</groupId> 
    <version>3.3.3.3.1</version> </parent> --> 
<groupId>com.xxxx.clinical</groupId> 
<artifactId>portlistener</artifactId> 
<packaging>jar</packaging> 
<name>portlistener</name> 
<version>0.0.0.0.01</version> 

<properties> 
    <camel.version>2.12.2</camel.version> 
    <cxf.version>2.7.8</cxf.version> 
    <activemq.version>5.6.0</activemq.version> 
    <jackson.version>1.9.13</jackson.version> 
</properties> 

<dependencies> 
    <dependency> 
     <groupId>org.codehaus.jackson</groupId> 
     <artifactId>jackson-core-asl</artifactId> 
     <version>${jackson.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.codehaus.jackson</groupId> 
     <artifactId>jackson-mapper-asl</artifactId> 
     <version>${jackson.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.codehaus.jackson</groupId> 
     <artifactId>jackson-jaxrs</artifactId> 
     <version>${jackson.version}</version> 
    </dependency> 

    <dependency> 
     <groupId>org.apache.cxf</groupId> 
     <artifactId>cxf-rt-frontend-jaxws</artifactId> 
     <version>${cxf.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.cxf</groupId> 
     <artifactId>cxf-rt-transports-http</artifactId> 
     <version>${cxf.version}</version> 
    </dependency> 
    <!-- This dependency is needed if you're using the Jetty container --> 
    <dependency> 
     <groupId>org.apache.cxf</groupId> 
     <artifactId>cxf-rt-transports-http-jetty</artifactId> 
     <version>${cxf.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.activemq</groupId> 
     <artifactId>activemq-all</artifactId> 
     <version>${activemq.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.activemq</groupId> 
     <artifactId>activemq-camel</artifactId> 
     <version>${activemq.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.activemq</groupId> 
     <artifactId>activemq-pool</artifactId> 
     <version>${activemq.version}</version> 
    </dependency> 
    <!-- Camel --> 
    <dependency> 
     <groupId>org.apache.camel</groupId> 
     <artifactId>camel-core</artifactId> 
     <version>${camel.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.camel</groupId> 
     <artifactId>camel-spring</artifactId> 
     <version>${camel.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.xbean</groupId> 
     <artifactId>xbean-spring</artifactId> 
     <version>3.15</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.camel</groupId> 
     <artifactId>camel-jms</artifactId> 
     <version>${camel.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.camel</groupId> 
     <artifactId>camel-hl7</artifactId> 
     <version>${camel.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.camel</groupId> 
     <artifactId>camel-netty</artifactId> 
     <version>${camel.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.camel</groupId> 
     <artifactId>camel-cxf</artifactId> 
     <version>${camel.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.camel</groupId> 
     <artifactId>camel-http</artifactId> 
     <version>${camel.version}</version> 
    </dependency> 
    <!-- hapi --> 
    <dependency> 
     <groupId>ca.uhn.hapi</groupId> 
     <artifactId>hapi-base</artifactId> 
     <version>2.1</version> 
     <exclusions> 
      <exclusion> 
       <artifactId>xercesImpl</artifactId> 
       <groupId>xerces</groupId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
    <dependency> 
     <groupId>ca.uhn.hapi</groupId> 
     <artifactId>hapi-structures-v25</artifactId> 
     <version>2.1</version> 
    </dependency> 


    <!-- logging --> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-api</artifactId> 
     <version>1.6.1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-log4j12</artifactId> 
     <version>1.6.1</version> 
    </dependency> 
    <dependency> 
     <groupId>log4j</groupId> 
     <artifactId>log4j</artifactId> 
     <version>1.2.16</version> 
    </dependency> 
</dependencies> 

<build> 
    <defaultGoal>install</defaultGoal> 

    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.3.2</version> 
      <configuration> 
       <source>1.6</source> 
       <target>1.6</target> 
      </configuration> 
     </plugin> 

     <!-- allows the route to be ran via 'mvn camel:run' --> 
     <plugin> 
      <groupId>org.apache.camel</groupId> 
      <artifactId>camel-maven-plugin</artifactId> 
      <version>2.9.0</version> 
     </plugin> 
    </plugins> 
</build> 
</project> 

回答

12

你缺少駱駝傑克遜依賴:

<dependency> 
    <groupId>org.apache.camel</groupId> 
    <artifactId>camel-jackson</artifactId> 
    <version>${camel-version}</version> 
</dependency> 

這會拉入jackson-core-asl和jackson-mapper-asl,但不幸的是不是jackson-jaxrs。對於後者,您仍需要兼容版本中的顯式依賴。

+0

Dooh!非常感謝。有時候我希望我能比我更早地發佈這個問題。 – KingAndrew