Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 带Hibernate应用程序的Spring启动失败_Java_Spring_Spring Boot_Hibernate - Fatal编程技术网

Java 带Hibernate应用程序的Spring启动失败

Java 带Hibernate应用程序的Spring启动失败,java,spring,spring-boot,hibernate,Java,Spring,Spring Boot,Hibernate,当我启动Spring Boot应用程序时,我发现: 2020-11-11 03:02:24.333警告20648---[main]ConfigServletWebServerApplicationContext:在上下文初始化过程中遇到异常-取消刷新尝试:org.springframework.beans.factory.unsatifiedDependencyException:创建名为“org.springframework.boot.autoconfigure.orm.jpa.Hibern

当我启动Spring Boot应用程序时,我发现:

2020-11-11 03:02:24.333警告20648---[main]ConfigServletWebServerApplicationContext:在上下文初始化过程中遇到异常-取消刷新尝试:org.springframework.beans.factory.unsatifiedDependencyException:创建名为“org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaConfiguration”的bean时出错:未满足的依赖项通过构造函数参数0;嵌套异常为org.springframework.beans.factory.BeanCreationException:使用类路径资源[org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]中定义的名称“dataSource”创建bean时出错:通过工厂方法实例化bean失败;嵌套异常为org.springframework.beans.beanInstationException:未能实例化[com.zaxxer.hikari.HikariDataSource]:工厂方法“dataSource”引发异常;嵌套异常为org.springframework.boot.autoconfigure.jdbc.DataSourceProperties$DataSourceBeanCreationException:未能确定合适的驱动程序类 2020-11-11 03:02:24.335信息20648---[main]o.apache.catalina.core.StandardService:停止服务[Tomcat] 2020-11-11 03:02:24.486信息20648---[main]条件评估报告日志监听器:

启动ApplicationContext时出错。要显示条件报告,请在启用“调试”的情况下重新运行应用程序。 2020-11-11 03:02:24.489错误20648---[main]o.s.b.d.记录故障分析报告员:


应用程序无法启动


说明:

配置数据源失败:未指定“url”属性,无法配置嵌入式数据源

原因:无法确定合适的驱动程序类别

行动:

考虑以下几点: 如果您想要一个嵌入式数据库(H2、HSQL或Derby),请将其放在类路径上。 如果要从特定配置文件加载数据库设置,则可能需要激活它(当前没有激活的配置文件)

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

    <groupId>groupId</groupId>
    <artifactId>Netcracker-teamproject-2020</artifactId>
    <version>1.0-SNAPSHOT</version>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.0</version>
                <configuration>
                    <release>11</release>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <dependencies>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.10</version>
            <scope>provided</scope>
        </dependency>

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

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-autoconfigure</artifactId>
            <version>2.3.5.RELEASE</version>
            <scope>compile</scope>
        </dependency>

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

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.3.5.RELEASE</version>
            <scope>compile</scope>
        </dependency>

        <dependency>
            <groupId>com.microsoft.sqlserver</groupId>
            <artifactId>mssql-jdbc</artifactId>
            <version>9.1.0.jre11-preview</version>
        </dependency>

        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-jdbc</artifactId>
            <version>9.0.10</version>
        </dependency>

        <dependency>
            <groupId>org.javassist</groupId>
            <artifactId>javassist</artifactId>
            <version>3.23.1-GA</version>
        </dependency>

    </dependencies>

</project>

4.0.0
groupId
Netcracker-teamproject-2020
1.0-快照
org.apache.maven.plugins
maven编译器插件
3.8.0
11
org.projectlombok
龙目
1.18.10
假如
org.springframework.boot
弹簧起动试验
2.3.5.1发布
测试
org.springframework.boot
弹簧靴自动配置
2.3.5.1发布
编译
org.springframework.boot
spring引导启动器数据jpa
2.3.5.1发布
org.springframework.boot
SpringBootStarterWeb
2.3.5.1发布
编译
com.microsoft.sqlserver
mssql jdbc
9.1.0.jre11-预览
org.apache.tomcat
TomcatJDBC
9.0.10
org.javassist
javassist
3.23.1-GA
您能告诉我该怎么做才能解决这个问题吗?

我的配置文件:

package com.projectparty.config;

import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.orm.hibernate5.HibernateTransactionManager;
import org.springframework.orm.hibernate5.LocalSessionFactoryBean;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;

import javax.sql.DataSource;
import java.util.Properties;

@Configuration
@EnableTransactionManagement
public class HibernateConfig {

    @Bean
    public DataSource dataSource() {
        return DataSourceBuilder.create()
                .driverClassName("com.microsoft.sqlserver.jdbc.SQLServerDriver")
                .url("jdbc:sqlserver://127.0.0.1:51264")
                .username("admin")
                .password("admin")
                .build();
    }


    @Bean
    public LocalSessionFactoryBean sessionFactory() {
        LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
        sessionFactory.setDataSource(dataSource());
        sessionFactory.setHibernateProperties(hibernateProperties());

        return sessionFactory;
    }

    @Bean
    public PlatformTransactionManager hibernateTransactionManager() {
        HibernateTransactionManager transactionManager
                = new HibernateTransactionManager();
        transactionManager.setSessionFactory(sessionFactory().getObject());

        return transactionManager;
    }

    private Properties hibernateProperties() {
        Properties hibernateProperties = new Properties();
        hibernateProperties.setProperty(
                "hibernate.hbm2ddl.auto", "update");
        hibernateProperties.setProperty(
                "hibernate.dialect", "org.hibernate.SQLServerDialect");

        return hibernateProperties;
    }
}
我的配置文件:

package com.projectparty.config;

import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.orm.hibernate5.HibernateTransactionManager;
import org.springframework.orm.hibernate5.LocalSessionFactoryBean;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;

import javax.sql.DataSource;
import java.util.Properties;

@Configuration
@EnableTransactionManagement
public class HibernateConfig {

    @Bean
    public DataSource dataSource() {
        return DataSourceBuilder.create()
                .driverClassName("com.microsoft.sqlserver.jdbc.SQLServerDriver")
                .url("jdbc:sqlserver://127.0.0.1:51264")
                .username("admin")
                .password("admin")
                .build();
    }


    @Bean
    public LocalSessionFactoryBean sessionFactory() {
        LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
        sessionFactory.setDataSource(dataSource());
        sessionFactory.setHibernateProperties(hibernateProperties());

        return sessionFactory;
    }

    @Bean
    public PlatformTransactionManager hibernateTransactionManager() {
        HibernateTransactionManager transactionManager
                = new HibernateTransactionManager();
        transactionManager.setSessionFactory(sessionFactory().getObject());

        return transactionManager;
    }

    private Properties hibernateProperties() {
        Properties hibernateProperties = new Properties();
        hibernateProperties.setProperty(
                "hibernate.hbm2ddl.auto", "update");
        hibernateProperties.setProperty(
                "hibernate.dialect", "org.hibernate.SQLServerDialect");

        return hibernateProperties;
    }
}

这可能是由多种原因造成的。在您的例子中,我看到您选择了JDBC连接“
mssql JDBC
”,而不是Hikara连接池

Spring boot 2+默认使用HikaraCP。因此,HikariCp的依赖关系位于“由spring自动配置调用”的类路径上。要解决这个问题,您可以尝试排除Hikari数据源,方法是将以下内容添加到pom.xml中

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
    <exclusions>
        <exclusion>
            <groupId>com.zaxxer</groupId>
            <artifactId>HikariCP</artifactId>
        </exclusion>
    </exclusions>
</dependency>

这可能是由多种原因造成的。在您的例子中,我看到您选择了JDBC连接“
mssql JDBC
”,而不是Hikara连接池

Spring boot 2+默认使用HikaraCP。因此,HikariCp的依赖关系位于“由spring自动配置调用”的类路径上。要解决这个问题,您可以尝试排除Hikari数据源,方法是将以下内容添加到pom.xml中

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
    <exclusions>
        <exclusion>
            <groupId>com.zaxxer</groupId>
            <artifactId>HikariCP</artifactId>
        </exclusion>
    </exclusions>
</dependency>

只需使用application.properties文件设置数据源url

spring:
    datasource:
        url: 'jdbc:mssql://localhost:5432/dbname'
        username: username
        password: password 

只需使用application.properties文件设置数据源url

spring:
    datasource:
        url: 'jdbc:mssql://localhost:5432/dbname'
        username: username
        password: password 

我最终解决了这个问题,只需添加

spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration

对于Spring Boot应用程序.properties,我最终解决了这个问题,只需添加

spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration

对于Spring Boot应用程序.properties

我已经完成了您给我的所有提示,遗憾的是,没有任何更改…此外,无论我在pom.xml、HibernateConfig文件或使用Hikari中更改smth,结果都是sameI完成了您给我的所有提示,遗憾的是,没有任何更改…而且,无论我在pom.xml中更改smth,HibernateConfig文件或使用Hikari,结果应该是相同的!应该是这样!