【问题标题】:No converter found for return value of type: class java.util.ArrayList未找到类型返回值的转换器:类 java.util.ArrayList
【发布时间】:2019-02-14 20:35:20
【问题描述】:

我正在遵循教程中的 Spring Boot 示例,该示例实现了一个 Restful 服务以从数据库表中获取人员列表,但是当我调用时出现错误:IE 上的http://localhost:8080/person:没有找到返回值的转换器类型:类 java.util.ArrayList 。 到目前为止,我尝试从关于 stackoverflow 的建议中添加 Jackson 依赖项,按照我的课程,感谢任何帮助。 Springboot应用程序:

package ben;


@SpringBootApplication
@EnableAutoConfiguration
public class SpringBootWebApplication
{
public static void main (String  [] args) {
    SpringApplication.run(SpringBootWebApplication.class, args);
  }

}

BDE4 类:

package ben.models;

@Entity
@Table(name="BDE4")
public class Bde
{
  @Id
  @Column
  private int id;

  @Column
  private int numero;

  public int getId()
  {
    return id;
  }
  public void setId(int id)
  {
    this.id = id;
  }
  public int getNumero()
  {
    return numero;
  }
  public void setNumero(int numero)
  {
    this.numero = numero;
  }
}

PrsonRepository 接口:

package ben.repository;

@Repository
public interface PersonRepository extends CrudRepository<Bde, Integer> {

}

PersonService 接口:

package ben.services;
public interface PersonService
{
  public List <Bde> findAll();
}

PersonServiceImpl 类:

package ben.services;

@Service

public class PersonServiceImpl implements PersonService
{
  @Autowired
  private PersonRepository personRepository;

  @Override
  public List<Bde> findAll()
  {
    System.out.println("PersonServiceImpl");
    return (List<Bde>) personRepository.findAll();
  }
}

PersonRest 类:

package ben.web;
@RestController
public class PersonRest
{
  @Autowired
  private PersonService personService;

  @RequestMapping("/person")
  public  List <Bde> findAll() {
    List <Bde> persons=(List<Bde>) personService.findAll();
    for (Bde pers:persons)
    {
      System.out.println("id"+pers.getId() +" numero"+pers.getNumero());
    }
    return persons;
  }
}

POM.XML :依赖项

<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>BenId</groupId>
  <artifactId>SpringBoot</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>


  <properties>
    <start-class>ben.SpringBootWebApplication</start-class>
    <java.version>1.8</java.version>
    <oracle.driver.version>12.1.0.2</oracle.driver.version>
  </properties>

  <parent>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
<!--       <version>2.8.4.RELEASE</version> -->
      <version>2.1.0.RELEASE</version>

  </parent>


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

<!-- </dependency> -->

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

    <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
    </dependency>

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


    </dependency>

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

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
        </dependency>

    <dependency>
      <groupId>org.apache.tomcat.embed</groupId>
      <artifactId>tomcat-embed-jasper</artifactId>
      <version>7.0.52</version>
<!--       <scope>provided</scope> -->
<!--       <version></version> -->
    </dependency>

    <dependency>
            <groupId>org.eclipse.jdt.core.compiler</groupId>
            <artifactId>ecj</artifactId>
            <version>4.6.1</version>
            <scope>provided</scope>
        </dependency>

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

    <dependency>
            <groupId>com.oracle.jdbc</groupId>
            <artifactId>ojdbc7</artifactId>
            <version>${oracle.driver.version}</version>

     </dependency>

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

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


  </dependencies>

  <build>
       <plugins>
          <plugin>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-maven-plugin</artifactId>
             <configuration>
                    <executable>true</executable>
                    <mainClass>ben.SpringBootWebApplication</mainClass>
                </configuration>
          </plugin>
       </plugins>
    </build>

</project>

应用程序属性:

spring.mvc.view.prefix:/WEB-INF/jsp/
spring.mvc.view.suffix:.jsp
spring.datasource.url=jdbc:oracle:thin:@12.53.2.202:1521:xe
spring.datasource.username=hr
spring.datasource.password=hr
spring.datasource.driverClassName=oracle.jdbc.OracleDriver
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=none
spring.jpa.hibernate.dialect=org.hibernate.dialect.Oracle10gDialect
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

【问题讨论】:

  • 发布您的 Gradle 或 Maven 依赖项。
  • 发布的依赖项
  • 您不需要明确包括杰克逊。删除 jackson-core 和 jackson-databind。 Spring Boot 将提供您需要的一切。并修复空的 元素。
  • 尝试将tomcat-embed-jasper 更新为9.0.167.* 是一个相当过时的版本。 application.properties 文件没问题。记得检查tomcat-embed-jasper 是否更新。
  • 删除吧,Spring Boot 已经有嵌入式服务器了

标签: java spring spring-boot spring-mvc restful-url


【解决方案1】:

我刚刚设置了您的项目并且它工作得非常好,我刚刚更改了 pom.xml 和 application.properties。此外,我使用 MySQL 作为数据库。这是 pom.xml 和属性文件。而且,也没有改变其他文件中的一个字。

pom.xml

<?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>
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.3.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>Demo project for Spring Boot</description>

<properties>
    <java.version>1.8</java.version>
</properties>

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

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </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>

</project>

application.properties

spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=yourpassword
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.generate-ddl=true
spring.jpa.show-sql=true
server.port = 8080

这是输出的截图

【讨论】:

  • 成功了,我刚刚复制了你的 POM.xml。谢谢 Divyani Garg。
【解决方案2】:

试试看:

   @GetMapping("/person")
  public  List <Bde> findAll() {
    List <Bde> persons=personService.findAll();
    for (Bde pers:persons)
    {
      System.out.println("id"+pers.getId() +" numero"+pers.getNumero());
    }
    return persons;
  }

在:Bde 类

 @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  private int id;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-04
    • 2019-12-18
    • 2018-11-02
    • 2017-04-06
    相关资源
    最近更新 更多