spring boot 项目访问controller报错 20C

搭建最基本的spring boot项目,版本是2.0.4.RELEASE。
整合mybatis, 从数据库中查询数据。
我想 通过浏览器,直接访问controller,看到json格式的数据;
但是,控制台中能看到查询的数据,接下来就报错。

Controller

 @Controller
public class UserController {
    @Autowired
    private UserService userService;

    @GetMapping("/findAll")
    @ResponseBody
    public List<User> findAll(){
        List<User> list = userService.findAll();

        System.out.println(Arrays.toString(list.toArray()));

        return userService.findAll();
    }

}

访问 http://localhost:1111/findAll
浏览器端没有显示json格式数据

控制台先显示查询出来的数据,然后报错;

 [User{id='122221', status='1', roleId='03bd3cc782b242bbab08c464ac35b0fa', 
 remark='监控大盘', UpdateTime=2018-08-16 15:10:27.0}, User{id='12222221', status='1', roleId='03bd3cc782b242bbab08c464ac35b0fa', remark='监控大盘', UpdateTime=2018-08-16 15:10:27.0}, User{id='yyx', status='1', roleId='yyx0101', remark='监控大盘', UpdateTime=2018-08-16 15:10:27.0}]


2018-08-21 17:03:55.089  INFO 17728 --- [a-EvictionTimer] c.n.e.registry.AbstractInstanceRegistry  : Running the evict task with compensationTime 410ms
2018-08-21 17:03:55.132 ERROR 17728 --- [nio-1111-exec-8] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: com/fasterxml/jackson/module/jaxb/JaxbAnnotationIntrospector] with root cause

java.lang.ClassNotFoundException: com.fasterxml.jackson.module.jaxb.JaxbAnnotationIntrospector

按照之前的想法,加上了@ResponseBody 注解后,方法返回的数据应该被springboot内置的jackson,转换成了json格式的数据, 然后浏览器端直接显示的。
不知道问题出在哪里?

10个回答

试下去掉@ResponseBody,然后把@Controller换成@RestController

wuxiongbo
kepwo 试过了,还是出现一样的情况
接近 2 年之前 回复

浏览器查看一下,数据是否返回页面了。
1.如果返回了,说明是页面数据接收错误。
2.如果页面没有返回,说明你后台的错误,找不到类,可以添加一下依赖

wuxiongbo
kepwo 回复weixin_42632514: 浏览器查看的响应的数据就是这个错误页面。应该是后台数据没有传输到浏览器来。依赖中重新配置了jacson ,以及添加了jaxb的依赖, 还是会出现一样的问题
接近 2 年之前 回复
weixin_42632514
慎独_llc 详情可以看看这个 https://blog.csdn.net/hadues/article/details/79188793
接近 2 年之前 回复

@RestController 是将请求换成json格式输出,你应该是哪里的配置不对,可以看看我的这边文章:https://somta.com.cn/#/blog/view/ef507e4e6e28434d9787ec715d406491 ,我也是用spring boo 2.0 整合mybatis的,有详细的过程和代码

重点是java.lang.ClassNotFoundException: com.fasterxml.jackson.module.jaxb.JaxbAnnotationIntrospector,转json返回前台报错,pom.xml里面配置的架包不对,可以试试下面的添加配置

com.fasterxml.jackson.core
jackson-databind
2.4.0

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

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

<dependency>
    <groupId>com.fasterxml.jackson.jaxrs</groupId>
    <artifactId>jackson-jaxrs-json-provider</artifactId>
    <version>2.4.0</version>
</dependency>

<dependency>
    <groupId>com.fasterxml.jackson.module</groupId>
    <artifactId>jackson-module-jaxb-annotations</artifactId>
    <version>2.4.0</version>
</dependency> 
diweikang
diweikang 回复kepwo: 哪里配置有问题 我也报这个错
9 个月之前 回复
wuxiongbo
kepwo 确实配置有问题,问题解决了一半,把eureka那段依赖注释掉后就正常访问了。。。但是接下来没办法用eureka了
接近 2 年之前 回复
wuxiongbo
kepwo 应该是转换这里有问题, 我添加这段依赖进去,springboot启动直接报错
接近 2 年之前 回复

楼主试一下@RequestMapping这个注解看看可以不。把@GetMapping换掉。

wuxiongbo
kepwo 还是一样。。。
接近 2 年之前 回复

pom配置

 <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>spring-demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>spring-demo</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.4.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <spring-cloud.version>Finchley.SR1</spring-cloud.version>
    </properties>

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

        <!-- MyBatis启动器 -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.2</version>
        </dependency>
        <!-- mysql驱动 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <!-- 配置c3p0连接池 -->
        <dependency>
            <groupId>com.mchange</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.5.2</version>
        </dependency>

        <!-- eureka 注册中心 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>

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

    </dependencies>

    <!-- springcloud -->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

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

</project>

spring boot 版本换成 1.5.x 的,


org.springframework.boot
spring-boot-starter-parent
1.5.7.RELEASE


org.springframework.boot
spring-boot-starter-parent
1.5.7.RELEASE
<!-- lookup parent from repository -->


可能是你UpdateTime 这个时间格式 引起的
spring boot 默认支持一种时间格式 而你的时间格式不是默认格式导致报错
而你打印出来的时间格式 又不是java的格式 类似这种 'Wed Jul 06 10:17:48 CST 2016'
说明你格式化的啦 UpdateTime 这个属性是不是加啦 注解 格式化啦
如果你要格式化时间 不用再注解属性格式化 可以在配置文件直接加
spring.mvc.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=GMT+8
ps: 加啦这个配置以后 前端提交的时候 也要这种时间格式提交数据不是会报错

确定了是方法返回数据后转换为json格式时出现问题;我在配置中改了一下,把eureka那段依赖注释掉后就正常访问了。。。问题解决了一半,但是接下来没办法用eureka了;

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问