簡體   English   中英

春季啟動 java.lang.IllegalStateException

[英]Spring boot java.lang.IllegalStateException

我正在制作一個 Spring Boot 應用程序來從 Oracle Db 獲取數據並顯示為字符串。 這是我的 pom.xml

<?xml version="1.0" encoding="UTF-8"?>

http://maven.apache.org/xsd/maven-4.0.0.xsd">4.0.0

<groupId>com.mygit.boot</groupId>
<artifactId>sampleBoot</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<name>sampleBoot</name>
<description>Demo project for Spring Boot</description>

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.1.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>
</properties>

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

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

    <!-- HTTP Core -->
    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpcore</artifactId>
        </dependency>

    <dependency>
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId>
        </dependency>

    <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-jpa -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
</dependencies>

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

有人可以幫忙嗎? ServerConfig 是我的實體類,我的控制器只是調用 getAllConfigurationData() 方法並將返回的列表打印為字符串。

package com.mygit.boot.dao.impl;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import com.mygit.boot.dao.IFetchDao;
import com.mygit.boot.entity.ServerConfig;

@Repository
@Transactional
public class FetchDaoImpl implements IFetchDao {

@PersistenceContext
private EntityManager entityManger;

@Override
public List<ServerConfig> getAllConfigurationData() {
    try {
        return entityManger.createQuery("select c from ServerConfig c", ServerConfig.class).getResultList();

    } catch (Exception e) {
        System.out.println("Exception while fetching server config !!!");
    }
    return null;
}
}

這是我的錯誤:

java.lang.IllegalStateException: Error processing condition on org.springframework.boot.autoconfigure.data.web.SpringDataWebAutoConfiguration.pageableCustomizer


Caused by: java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/ObjectMapper

控制器:

package com.mygit.boot.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.mygit.boot.dao.IFetchDao;
import com.mygit.boot.entity.ServerConfig;

@RestController
public class TestController {

@Autowired
private IFetchDao fetchDao;

@RequestMapping("/test")
public String print() {

    List<ServerConfig> l=fetchDao.getAllConfigurationData();
    return l.toString();
}
}

實體類:包com.mygit.boot.entity;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

import org.hibernate.annotations.NamedNativeQueries;
import org.hibernate.annotations.NamedNativeQuery;


@Entity
@Table(name = "serverconfig")
@NamedNativeQueries({ @NamedNativeQuery(name = "getMaxLoginAttemptsQuery", query = "SELECT * FROM serverconfig sconfig where sconfig.confKey=? and sconfig.configuration=?", resultClass = ServerConfig.class),
                  @NamedNativeQuery(name = "getPwdConfigProperties", query = "SELECT * FROM serverconfig sconfig WHERE sconfig.confKey IN ('"+Constants.NO_OF_UPPERCASES+"','"+Constants.NO_OF_LOWERCASES+"','"+Constants.NO_OF_DIGIT+"','"+Constants.NO_OF_SPECIALCHARS+"','"+Constants.PWD_MIN_LENGTH+"','"+Constants.PWD_MAX_LENGTH+"')", resultClass = ServerConfig.class)})

public class ServerConfig implements java.io.Serializable {

private static final long serialVersionUID = 1L;

@Id
@Column(name = "ID")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_SERVERCONFIG")
@SequenceGenerator(name = "SEQ_SERVERCONFIG", sequenceName = "SEQ_SERVERCONFIG")
private Long id;

@Column(name = "CONFIGURATION", length = 45)
private String configuration;

@Column(name = "CONFKEY", length = 128)
private String confKey;

@Column(name = "CONFVALUE", length = 4000)
private String confValue;

public ServerConfig() {
}

public Long getId() {
    return id;
}

public void setId(Long id) {
    this.id = id;
}

public String getConfiguration() {
    return configuration;
}

public void setConfiguration(String configuration) {
    this.configuration = configuration;
}

public String getConfKey() {
    return confKey;
}

public void setConfKey(String confKey) {
    this.confKey = confKey;
}

public String getConfValue() {
    return confValue;
}

public void setConfValue(String confValue) {
    this.confValue = confValue;
}

}

主要應用類:

package com.mygit.boot.main;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;

@SpringBootApplication
@ComponentScan({"com.mygit.boot.controller", "com.mygit.boot.dao", "com.mygit.boot.dao.impl", "com.mygit.boot.entity"})
public class SampleBootApplication {

public static void main(String[] args) {
    SpringApplication.run(SampleBootApplication.class, args);
}
}

您可以嘗試添加以下正確版本嗎

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

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

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

你可以添加這個配置類嗎?

@Configuration
public class JacksonConfiguration {

    @Bean
    public ObjectReader messageObjectReader(ObjectMapper objectMapper) {
        return objectMapper.readerFor(ServerConfig.class);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM