web-dev-qa-db-ja.com

java.lang.IllegalArgumentException:タイプの戻り値のコンバーターが見つかりません

このコードで

@RequestMapping(value = "/bar/foo", method = RequestMethod.GET)
    public ResponseEntity<foo> foo() {

        Foo model;
        ...
        return ResponseEntity.ok(model);
    }
}

次の例外が発生します

Java.lang.IllegalArgumentException: No converter found for return value of type

私の推測では、Jacksonが欠落しているため、オブジェクトをJSONに変換できません。ジャクソンはスプリングブーツに組み込まれていると思ったので、なぜかわかりません。

次に、pom.xmlにジャクソンを追加しようとしましたが、まだ同じエラーがあります

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

これを機能させるには、スプリングブートプロパティを変更する必要がありますか?

ありがとうございました

63
Marc

問題は、Fooのネストされたオブジェクトの1つにgetter/setterがなかったことです。

173
Marc

以下の依存関係をpom.xmlに追加します。

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.8.1</version>
</dependency>
16
PAA

エラーメッセージに記載されているBean内にないゲッター/セッターを追加します。

8
Soumyajit Swain

@ResponseBodyおよびgetter/setterを使用します。それがあなたの問題を解決することを願っています。

@RequestMapping(value = "/bar/foo", method = RequestMethod.GET)
@ResponseBody
public ResponseEntity<foo> foo() {

mvc-dispatcher-servlet.xmlを更新します。

<mvc:annotation-driven>
     <mvc:message-converters>
            <bean class="org.springframework.http.converter.StringHttpMessageConverter"/>
            <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
   </mvc:message-converters>
</mvc:annotation-driven>
6
SkyWalker

私はまったく同じ問題を抱えていましたが、残念ながらゲッターメソッドを追加したり、ジャクソンの依存関係を追加したりしても解決できませんでした。

次に、オフィシャルスプリングガイドを見て、ここに記載されている例に従いました- https://spring.io/guides/gs/actuator-service/ JSON形式に。

次に、自分のプロジェクトを再度作成しましたが、今回は依存関係も追加し、pom.xmlファイルに存在するプラグインを作成します上記の公式Spring Guideの例。

変更された依存関係とXMLファイルのビルド部分は次のようになります!

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

上記のリンクでも同じことがわかります。

そして魔法のように、少なくとも私にとっては、うまくいきます。そのため、すでに他のオプションを使い果たしている場合は、私と同じように、これを試してみてください

補足として、以前のプロジェクトに依存関係を追加し、Mavenでプロジェクトのインストールと更新を行ったとき、それは機能しませんでした。そのため、プロジェクトを最初からやり直す必要がありました。私のプロジェクトはサンプルプロジェクトであるため、あまり気にしませんでしたが、それも探してみてください。

3
thisisashwani

この問題は、私の場合、スプリングフレームワークがネストされたオブジェクトのプロパティを取得できなかったために発生しました。ゲッター/セッターは解決の1つの方法です。プロパティを公開することは、これが本当に問題であるかどうかを検証するもう1つの迅速で汚い解決策です。

3
vish213

私は長い間同じ問題に直面していましたが、オブジェクトマッパーを使用してオブジェクトをJSONに変換し、JSON Object

@RequestMapping(value = "/getTags", method = RequestMethod.GET)
public @ResponseBody String getTags(@RequestParam String tagName) throws
        JsonGenerationException, JsonMappingException, IOException {
    List<Tag> result = new ArrayList<Tag>();
    for (Tag tag : data) {
        if (tag.getTagName().contains(tagName)) {
            result.add(tag);
        }
    }
    ObjectMapper objectMapper = new ObjectMapper();
    String json = objectMapper.writeValueAsString(result);
    return json;
}
1
Kiran Kawade

私の場合、ライブラリjackson-core.jarを追加するのを忘れていました。jackson-annotations.jarとjackson-databind.jarのみを追加しました。 jackson-core.jarを追加すると、問題が修正されました。

0
Lisa

また、クラス内の異なるプロパティに2つの@JsonProperty( "some_value")同一行を誤って配置した場合にも、このようなエラーが発生しました。

0
Vit Ias

構成クラスの@EnableWebMvc注釈は、私の問題を解決しました。 (Spring 5、web.xmlなし、AbstractAnnotationConfigDispatcherServletInitializerによって初期化)

0
user3636486

しばらくの間、同じエラーが発生していました。すべてのプロパティでゲッターメソッドが使用可能であることを確認しましたが、それでも同じエラーが発生していました。問題を解決するにはMVC xml(configuration)を設定します

 <mvc:annotation-driven/>

これは、Springがジャクソンの存在を検出し、対応するコンバーターをセットアップするために必要です。

0
Nilay