美文网首页
springboot项目提示No converter found

springboot项目提示No converter found

作者: 小马将过河 | 来源:发表于2020-02-03 23:19 被阅读0次

    先说解决方案,在pom中加入如下依赖,解决。

            <!--json-->
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-core</artifactId>
                <version>2.9.9</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-annotations</artifactId>
                <version>2.9.9</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
                <version>2.9.9</version>
            </dependency>
    

    说起来,这可真真是一个坑爹的问题,困扰了一天,烦了一天,我真以为我大半年没碰java,连新建个sprintboot的rest接口用完美的intellij idea这么高大上的工具都创建不出来了呢。

    接口

    看看错误吧.
    两个连入门都算不上的接口

    package com.marvin.demo.controller;
    
    import com.marvin.demo.vo.DemoEntity;
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web.bind.annotation.RequestBody;
    import org.springframework.web.bind.annotation.RestController;
    
    /**
     * 精诚所至,金石为开。
     * 石の上にも三年;陽気の発する所金石亦透る。
     *
     * @Author mahaiqiang
     * @Create 2020/2/1 11:06 下午
     * @Description TODO
     **/
    @Slf4j
    @RestController
    public class DemoController {
    
        @GetMapping("/demo1")
        public DemoEntity demo1() {
            log.info("第一个get接口");
            DemoEntity de = new DemoEntity();
            de.setName("李四");
            return de;
        }
    
        @PostMapping("/demo2")
        public DemoEntity demo2(@RequestBody DemoEntity entity) {
            log.info("第一个post接口, 参数:{}", entity);
            entity.setName("Hello, " + entity.getName());
            return entity;
        }
    }
    
    

    错误

    GET是正常的,但是POST的这个接口,因为用了@RequestBody注解,要转换json,所以就死活不行。
    错误是这样的:

    2020-02-03 22:55:34.382  WARN 40841 --- [nio-8080-exec-2] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/json;charset=UTF-8' not supported]
    2020-02-03 22:55:34.405  WARN 40841 --- [nio-8080-exec-2] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.http.converter.HttpMessageNotWritableException: No converter found for return value of type: class java.util.LinkedHashMap]
    
    

    出这个错我先上网查,有个推荐找不到了说引入jackson看日志我引入的是2.9.6不知道是不是还少引用了啥,反正没成。

    让别的同事试了下,人家说啥也不用干,导入进去就能运行,日了狗了,咋回事,肯定就是环境问题了呗。

    于是就jdk、maven、intellij idea,重新配置,甚至重装,都搞一遍也没办法了。

    第二天继续按照错误提示找,找到个原来就翻出来过的链接,加了依赖后莫名其妙好了,而且删除了依赖立马就能复现问题了。

    正常

    预期是这样的

    com.marvin.demo.DemoApplication
    
      .   ____          _            __ _ _
     /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
    ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
     \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
      '  |____| .__|_| |_|_| |_\__, | / / / /
     =========|_|==============|___/=/_/_/_/
     :: Spring Boot ::        (v2.2.4.RELEASE)
    
    2020-02-03 22:51:16.565  INFO 40753 --- [           main] com.marvin.demo.DemoApplication          : Starting DemoApplication on 192.168.0.105 with PID 40753 (/Users/mahaiqiang/git/mygitrepo/secret-demo/target/classes started by mahaiqiang in /Users/mahaiqiang/git/mygitrepo/secret-demo)
    2020-02-03 22:51:16.571  INFO 40753 --- [           main] com.marvin.demo.DemoApplication          : No active profile set, falling back to default profiles: default
    2020-02-03 22:51:17.751  INFO 40753 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
    2020-02-03 22:51:17.763  INFO 40753 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
    2020-02-03 22:51:17.764  INFO 40753 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.30]
    2020-02-03 22:51:17.838  INFO 40753 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
    2020-02-03 22:51:17.838  INFO 40753 --- [           main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 1205 ms
    2020-02-03 22:51:18.043  INFO 40753 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
    2020-02-03 22:51:18.230  INFO 40753 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
    2020-02-03 22:51:18.234  INFO 40753 --- [           main] com.marvin.demo.DemoApplication          : Started DemoApplication in 2.039 seconds (JVM running for 2.681)
    2020-02-03 22:51:29.934  INFO 40753 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring DispatcherServlet 'dispatcherServlet'
    2020-02-03 22:51:29.934  INFO 40753 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
    2020-02-03 22:51:29.942  INFO 40753 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 8 ms
    2020-02-03 22:51:30.045  INFO 40753 --- [nio-8080-exec-1] c.marvin.demo.controller.DemoController  : 第一个post接口, 参数:DemoEntity(name=a)
    2020-02-03 22:51:50.866  INFO 40753 --- [nio-8080-exec-3] c.marvin.demo.controller.DemoController  : 第一个post接口, 参数:DemoEntity(name=marvin)
    
    

    这次是百度救了我,我一般用的必应搜索引擎,没想到按照第二个错误百度出来的第一条直接就是解决方案。

    但是按照方案说第一条,我的pom文件里已经有spring-boot-starter-web

    <dependency>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    

    但是还是逼着我加了jackson才好使了。
    先记录一笔,再慢慢想原因吧,希望日后不会再碰到这么恶心的问题。

    感谢

    SpringBoot2.X 遭遇 No converter found for return value of type: class java.util.LinkedHashMap

    相关文章

      网友评论

          本文标题:springboot项目提示No converter found

          本文链接:https://www.haomeiwen.com/subject/dzclxhtx.html