23

私はJacksonサンプルコードを使用してPOJOを逆シリアル化します。

ObjectMapper m = new ObjectMapper();

この行はNoSuchMethodErrorをスローします:

Exception in thread "main" java.lang.NoSuchMethodError: org.codehaus.jackson.type.JavaType.<init>(Ljava/lang/Class;)V
    at org.codehaus.jackson.map.type.TypeBase.<init>(TypeBase.java:15)
    at org.codehaus.jackson.map.type.SimpleType.<init>(SimpleType.java:45)
    at org.codehaus.jackson.map.type.SimpleType.<init>(SimpleType.java:40)
    at org.codehaus.jackson.map.type.TypeBindings.<clinit>(TypeBindings.java:18)
    at org.codehaus.jackson.map.type.TypeFactory._fromType(TypeFactory.java:525)
    at org.codehaus.jackson.map.type.TypeFactory.type(TypeFactory.java:61)
    at org.codehaus.jackson.map.ObjectMapper.<clinit>(ObjectMapper.java:179)
    at com.me.util.ctrl.BillingJobStatus.fromJson(BillingJobStatus.java:37)

理解できません

4

9 に答える 9

28

あなたのJackson JARが同期していないと思います。JavaTypeクラスはJARjackson-coreにあり、ObjectMapperクラスは にありjackson-mapperます。

これらが両方とも同じバージョンであることを確認してください。

于 2011-02-23T17:05:47.090 に答える
5

ここでの秘訣は、jackson を使用する依存関係から除外することです。

どの依存関係がそれをインポートするかを確認するには、次の maven コマンドを使用できます。

mvn dependency:tree -Dincludes=org.codehaus.jackson

于 2014-05-28T09:38:31.867 に答える
5

私はこれと同じ問題を抱えていました。コア jar は 1.7.1 で、マッパーは 1.8.1 でした。注: Maven でこれを修正するために、除外を追加し、適切なバージョンをプルダウンしました。

        <exclusions>
            <exclusion>
                <groupId>org.codehaus.jackson</groupId>
                <artifactId>jackson-mapper-asl</artifactId>
            </exclusion>
        </exclusions>
于 2011-06-23T15:12:08.480 に答える
3

私の場合、これを引き起こしたのは amazonaws SDK でした。jackson-mapper-asl を除外するだけでは機能しませんでしたが、core と mapper を除外すると次のようになりました。

    <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-java-sdk</artifactId>
        <version>1.3.13</version>
        <exclusions>
            <exclusion>
                <groupId>org.codehaus.jackson</groupId>
                <artifactId>jackson-core-asl</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.codehaus.jackson</groupId>
                <artifactId>jackson-mapper-asl</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
于 2013-02-25T22:46:53.737 に答える
3

私の場合、古いバージョンの jackson を含む yammer-metrics ライブラリが原因でした。

<dependency>
  <groupId>com.yammer.metrics</groupId>
  <artifactId>metrics-servlet</artifactId>
  <version>2.1.2</version>
    <exclusions>
        <exclusion>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-mapper-asl</artifactId>
        </exclusion>
    </exclusions>
</dependency>
于 2013-02-15T05:13:46.527 に答える
2

Hadoop で作業しているときに、次の除外を設定してこのエラーを解消しました。

<dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-core</artifactId>
    <version>1.0.1</version>
    <exclusions>
        <exclusion>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-mapper-asl</artifactId>
        </exclusion>
    </exclusions>   
</dependency>
于 2012-09-03T17:22:16.190 に答える
1

これは、@RequestBody が異なる Spring バージョンに異なる jar を使用しているためです。Spring 4 を使用している場合は、異なる jar を追加する必要があります。

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.4.3</version>
</dependency>

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.4.3</version>
</dependency>

スプリング 3 を使用する場合は、この jar を使用する必要があります。

 <dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-mapper-asl</artifactId>
    <version>1.5.0</version>
</dependency>
于 2015-10-15T15:13:24.150 に答える
0

はい、この問題に直面している人は誰でも、依存関係を明確に調査する必要があります

mvn dependency:tree -Dincludes=org.codehaus.jackson

私の場合、 Atmosphere-Socket-io に jackson 依存関係がありました。

<dependency>
        <groupId>org.atmosphere</groupId>
        <artifactId>atmosphere-socketio</artifactId>
        <version>2.2.1</version>
        <exclusions>
            <exclusion>
                <groupId>org.codehaus.jackson</groupId>
                <artifactId>jackson-mapper-lgpl</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.codehaus.jackson</groupId>
                <artifactId>jackson-core-lgpl</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

それを突き止めるのに数時間かかりました。私にインスピレーションを与えてくれた上記のソリューションに感謝します! 良い仕事を続けてください!

于 2015-03-24T15:52:26.223 に答える