web-dev-qa-db-ja.com

Jackson ObjectMapper()コンストラクターがNoSuchMethodをスローする

私はジャクソンのサンプルコードを使って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)

わかりません

23
Mojo

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

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

28
skaffman

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

        <exclusions>
            <exclusion>
                <groupId>org.codehaus.jackson</groupId>
                <artifactId>jackson-mapper-asl</artifactId>
            </exclusion>
        </exclusions>
5
Jeff

ここでのトリックは、ジャクソンをそれを使用する依存関係から除外することです。

インポートする依存関係を確認するには、次のmavenコマンドを使用します。

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

5
wild_nothing

私の場合、これを引き起こしたのはamazonaws sdkでした。 jackson-mapper-aslの除外のみを使用しても機能しませんでしたが、コアとマッパーの除外を使用すると次のようになりました。

    <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>
3
user1084563

私の場合、古いバージョンのジャクソンを含む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>
3
Pratik Khadloya

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>
2

@RequestBodyは異なるバージョンの異なるjarを使用するためです。異なるバージョンのjarを追加する必要があるよりも、Spring 4を使用する場合:

<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>

spring 3を使用している場合は、このjarを使用する必要があります:

 <dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-mapper-asl</artifactId>
    <version>1.5.0</version>
</dependency>
1

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

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

私の場合、私はAtmosphere-Socket-ioにジャクソン依存関係がありました:

<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>

それを追跡するのに数時間かかりました。私にインスピレーションを与えた上記の解決策をみんなに感謝します!今後ともよろしくお願いいたします。

0
qgicup