스프링 부트-데이터베이스 유형 NONE에 대한 임베디드 데이터베이스 드라이버 클래스를 판별 할 수 없음


210

이것은 내 웹 응용 프로그램을 실행하려고 할 때 발생하는 오류입니다.

[INFO] WARNING: Nested in org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private javax.sql.DataSource org.springframework.boot.autoconfigure.orm.jpa.JpaBaseConfiguration.dataSource; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceAutoConfiguration$NonEmbeddedConfiguration.class]: Instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public javax.sql.DataSource org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration$NonEmbeddedConfiguration.dataSource()] threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: Cannot determine embedded database driver class for database type NONE. If you want an embedded database please put a supported one on the classpath.:
    [INFO] org.springframework.beans.factory.BeanCreationException: Cannot determine embedded database driver class for database type NONE. If you want an embedded database please put a supported one on the classpath.
    [INFO]  at org.springframework.boot.autoconfigure.jdbc.DataSourceProperties.getDriverClassName(DataSourceProperties.java:91)
    [INFO]  at org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration$NonEmbeddedConfiguration.dataSource(DataSourceAutoConfiguration.java:100)
    [INFO]  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    [INFO]  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    [INFO]  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    [INFO]  at java.lang.reflect.Method.invoke(Method.java:606)
    [INFO]  at com.google.appengine.tools.development.agent.runtime.Runtime.invoke(Runtime.java:115)
    [INFO]  at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:166)
    [INFO]  at org.springframework.beans.factory.support.ConstructorResolver$3.run(ConstructorResolver.java:580)
    [INFO]  at java.security.AccessController.doPrivileged(Native Method)
    [INFO]  at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:577)
    [INFO]  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1094)
    [INFO]  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:989)
    [INFO]  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:504)
    [INFO]  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475)
    [INFO]  at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:304)
    [INFO]  at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228)
    [INFO]  at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:300)
    [INFO]  at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:195)
    [INFO]  at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1017)
    [INFO]  at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:960)
    [INFO]  at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:858)
    [INFO]  at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:480)
    [INFO]  at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87)
    [INFO]  at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:289)
    [INFO]  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1185)
    [INFO]  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:537)
    [INFO]  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475)
    [INFO]  at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:304)
    [INFO]  at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228)
    [INFO]  at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:300)
    [INFO]  at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:195)
    [INFO]  at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:370)
    [INFO]  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1094)
    [INFO]  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:989)
    [INFO]  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:504)
    [INFO]  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475)
    [INFO]  at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:304)
    [INFO]  at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228)
    [INFO]  at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:300)
    [INFO]  at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:195)
    [INFO]  at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:973)
    [INFO]  at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:750)
    [INFO]  at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:482)
    [INFO]  at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:683)
    [INFO]  at org.springframework.boot.SpringApplication.run(SpringApplication.java:313)
    [INFO]  at org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:142)
    [INFO]  at org.springframework.boot.legacy.context.web.SpringBootContextLoaderListener.initWebApplicationContext(SpringBootContextLoaderListener.java:60)
    [INFO]  at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106)
    [INFO]  at org.mortbay.jetty.handler.ContextHandler.startContext(ContextHandler.java:548)
    [INFO]  at org.mortbay.jetty.servlet.Context.startContext(Context.java:136)
    [INFO]  at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250)
    [INFO]  at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517)
    [INFO]  at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467)
    [INFO]  at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    [INFO]  at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
    [INFO]  at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    [INFO]  at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
    [INFO]  at org.mortbay.jetty.Server.doStart(Server.java:224)
    [INFO]  at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    [INFO]  at com.google.appengine.tools.development.JettyContainerService.startContainer(JettyContainerService.java:249)
    [INFO]  at com.google.appengine.tools.development.AbstractContainerService.startup(AbstractContainerService.java:306)
    [INFO]  at com.google.appengine.tools.development.AutomaticInstanceHolder.startUp(AutomaticInstanceHolder.java:26)
    [INFO]  at com.google.appengine.tools.development.AbstractModule.startup(AbstractModule.java:79)
    [INFO]  at com.google.appengine.tools.development.Modules.startup(Modules.java:88)
    [INFO]  at com.google.appengine.tools.development.DevAppServerImpl.doStart(DevAppServerImpl.java:254)
    [INFO]  at com.google.appengine.tools.development.DevAppServerImpl.access$000(DevAppServerImpl.java:47)
    [INFO]  at com.google.appengine.tools.development.DevAppServerImpl$1.run(DevAppServerImpl.java:212)
    [INFO]  at com.google.appengine.tools.development.DevAppServerImpl$1.run(DevAppServerImpl.java:210)
    [INFO]  at java.security.AccessController.doPrivileged(Native Method)
    [INFO]  at com.google.appengine.tools.development.DevAppServerImpl.start(DevAppServerImpl.java:210)
    [INFO]  at com.google.appengine.tools.development.DevAppServerMain$StartAction.apply(DevAppServerMain.java:277)
    [INFO]  at com.google.appengine.tools.util.Parser$ParseResult.applyArgs(Parser.java:48)
    [INFO]  at com.google.appengine.tools.development.DevAppServerMain.run(DevAppServerMain.java:219)
    [INFO]  at com.google.appengine.tools.development.DevAppServerMain.main(DevAppServerMain.java:210)

나는 올바른 조합 datanucleus-appenginedatanucleus항아리를 가지고 있다고 생각합니다 .

2.1 : DataNucleus 3.1.x (코어, api-jdo, api-jpa, 인핸서)가 필요합니다. SDK 1.6.4 이상 필요이 Datanucleus 릴리스는 더 이상 DataNucleus 프로젝트에서 지원되지 않습니다.

JPA 앱 구성 :

@Configuration
@EnableJpaRepositories("demo.core.entity")
@EnableTransactionManagement
class JpaApplicationConfig {
    private static final Logger logger = Logger
            .getLogger(JpaApplicationConfig.class.getName());
    @Bean
    public AbstractEntityManagerFactoryBean entityManagerFactory() {
        logger.info("Loading Entity Manager...");
        LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
        factory.setPersistenceUnitName("transactions-optional");
        return factory;
    }
    @Bean
    public PlatformTransactionManager transactionManager() {
        logger.info("Loading Transaction Manager...");
        JpaTransactionManager txManager = new JpaTransactionManager();
        txManager.setEntityManagerFactory(entityManagerFactory().getObject());
        return txManager;
    }
    @Bean
    public PersistenceExceptionTranslator persistenceExceptionTranslator() {
        return new OpenJpaDialect();
    }
}

Application.java

@Configuration
@ComponentScan
@EnableAutoConfiguration
@RestController
public class Application {

    private static final EntityManagerFactory INSTANCE =
            Persistence.createEntityManagerFactory("transactions-optional");

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

    @RequestMapping("/")
    public String home() {
        return "Hello World";
    }

}

치어 리더 :

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="...">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.demohq</groupId>
    <artifactId>demo-boot</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>

    <name>demo-boot</name>
    <description>Demo project</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.1.0.BUILD-SNAPSHOT</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-legacy</artifactId>
            <version>1.1.0.BUILD-SNAPSHOT</version>
        </dependency>
        <!--<dependency>-->
            <!--<groupId>net.kindleit</groupId>-->
            <!--<artifactId>gae-runtime</artifactId>-->
            <!--<version>${gae.version}</version>-->
            <!--<type>pom</type>-->
            <!--<scope>provided</scope>-->
        <!--</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-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aspects</artifactId>
        </dependency>
        <!--<dependency>-->
            <!--<groupId>org.hsqldb</groupId>-->
            <!--<artifactId>hsqldb</artifactId>-->
            <!--<scope>runtime</scope>-->
        <!--</dependency>-->
        <dependency>
            <groupId>com.google.appengine</groupId>
            <artifactId>appengine-api-labs</artifactId>
            <version>${gae.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.google.appengine</groupId>
            <artifactId>appengine-api-stubs</artifactId>
            <version>${gae.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.google.appengine</groupId>
            <artifactId>appengine-testing</artifactId>
            <version>${gae.version}</version>
            <scope>test</scope>
        </dependency>
        <!-- DataNucleus -->
        <dependency>
            <groupId>org.datanucleus</groupId>
            <artifactId>datanucleus-api-jpa</artifactId>
            <version>${datanucleus.jpa.version}</version>
        </dependency>
        <dependency>
            <groupId>org.datanucleus</groupId>
            <artifactId>datanucleus-core</artifactId>
            <version>${datanucleus.jpa.version}</version>
        </dependency>
        <dependency>
            <groupId>org.datanucleus</groupId>
            <artifactId>datanucleus-enhancer</artifactId>
            <version>${datanucleus.jpa.version}</version>
        </dependency>
        <dependency>
            <groupId>com.google.appengine.orm</groupId>
            <artifactId>datanucleus-appengine</artifactId>
            <version>${datanucleus.version}</version>
            <!-- Need to exclude the enhancer since it interfere with the enhancer plugin. -->
            <exclusions>
                <exclusion>
                    <groupId>org.datanucleus</groupId>
                    <artifactId>datanucleus-enhancer</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>javax.jdo</groupId>
            <artifactId>jdo-api</artifactId>
            <version>3.0.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-jpa_2.0_spec</artifactId>
            <version>1.1</version>
        </dependency>

        <!-- OpenJPA -->
        <dependency>
            <groupId>org.apache.openjpa</groupId>
            <artifactId>openjpa-persistence</artifactId>
            <version>2.3.0</version>
        </dependency>


    </dependencies>

    <properties>
        <start-class>demo.Application</start-class>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.7</java.version>
        <m2eclipse.wtp.contextRoot>/</m2eclipse.wtp.contextRoot>
        <datanucleus.jpa.version>3.1.1</datanucleus.jpa.version>
        <datanucleus.version>2.1.2</datanucleus.version>
        <gae.version>1.8.8</gae.version>
        <gae.home>${settings.localRepository}/com/google/appengine/appengine-java-sdk/${gae.version}/appengine-java-sdk/appengine-java-sdk-${gae.version}</gae.home>
        <gae.application.version>test</gae.application.version>
        <!--<org.springframework-version>4.0.5.RELEASE</org.springframework-version>-->
    </properties>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <!--
            <plugin>
                <groupId>net.kindleit</groupId>
                <artifactId>maven-gae-plugin</artifactId>
                <version>0.9.6</version>
                <dependencies>
                    <dependency>
                        <groupId>net.kindleit</groupId>
                        <artifactId>gae-runtime</artifactId>
                        <version>${gae.version}</version>
                        <type>pom</type>
                    </dependency>
                </dependencies>
            </plugin>
            -->
            <plugin>
                <groupId>com.google.appengine</groupId>
                <artifactId>appengine-maven-plugin</artifactId>
                <version>${gae.version}</version>
                <configuration>
                    <enableJarClasses>false</enableJarClasses>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-release-plugin</artifactId>
                <configuration>
                    <goals>gae:deploy</goals>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat6-maven-plugin</artifactId>
                <version>2.0</version>
                <configuration>
                    <path>/</path>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.datanucleus</groupId>
                <artifactId>maven-datanucleus-plugin</artifactId>
                <version>${datanucleus.jpa.version}</version>
                <configuration>
                    <api>JPA</api>
                    <!--<mappingIncludes>**/entity/*.class</mappingIncludes>-->
                    <verbose>true</verbose>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>org.datanucleus</groupId>
                        <artifactId>datanucleus-core</artifactId>
                        <version>${datanucleus.jpa.version}</version>
                    </dependency>
                </dependencies>
                <executions>
                    <execution>
                        <phase>compile</phase>
                        <goals>
                            <goal>enhance</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    <profiles>
        <!-- We can configure our integration server to activate this profile and 
            perform gae:deploy, thus uploading latest snapshot to the http://1.latest.<applicationName>.appspot.com 
            automatically -->
        <profile>
            <id>integration-build</id>
            <properties>
                <gae.application.version>stage</gae.application.version>
            </properties>
        </profile>

        <!-- This profile will activate automatically during release and upload 
            application to the http://2.latest.<applicationName>.appspot.com (We might 
            want to set the 2nd version as our applications Default version to be accessible 
            at http://<applicationName>.appspot.com) -->
        <profile>
            <id>release-build</id>
            <activation>
                <property>
                    <name>performRelease</name>
                    <value>true</value>
                </property>
            </activation>

            <properties>
                <!-- During release, set application version in appengine-web.xml to 
                    2 -->
                <gae.application.version>release</gae.application.version>
            </properties>
        </profile>
    </profiles>

    <repositories>
        <repository>
            <id>spring-snapshots</id>
            <name>Spring Snapshots</name>
            <url>http://repo.spring.io/snapshot</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>http://repo.spring.io/milestone</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>spring-snapshots</id>
            <name>Spring Snapshots</name>
            <url>http://repo.spring.io/snapshot</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </pluginRepository>
        <pluginRepository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>http://repo.spring.io/milestone</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </pluginRepository>
    </pluginRepositories>

</project>

내 앱에서 무엇을 놓칠 수 있을지 궁금합니다. 여기에서 지시를 따랐습니다 . Google Appengine에서 Spring Data JPA 사용


나는 @EnableAutoConfiguration을 주석 처리하면 내가 얻을 : [이 INFO] 경고 : metricFilter 실패 : org.springframework.beans.factory.NoSuchBeanDefinitionException : 없음 콩라는 이름의 'metricFilter'정의가
쿼크

완전한 코드는 다음과 같습니다. bit.ly/1i53oAq
쿼크

답변:


170

을 (를) 자동 구성하기에 충분한 정보를 스프링 부트에 제공하지 않았습니다 DataSource. 이렇게하려면 접두사 를 application.properties사용하여 몇 가지 속성을 추가해야 spring.datasource합니다. 설정할 수있는 모든 특성을 보려면 DataSourceProperties 를 살펴보십시오 .

적절한 URL 및 드라이버 클래스 이름을 제공해야합니다.

spring.datasource.url = 
spring.datasource.driver-class-name = 

3
확실하지 내가 DataNucleus + 구글 앱 엔진을 사용하고 여기에 무엇을 넣어
쿼크

@xybrek 응용 프로그램에 application.properties 파일을 추가하고 그 안에 데이터 소스 속성을 추가하십시오.
iCrus

1
spring.datasource.url = jdbc : mysql : // localhost / abc # spring.datasource.driverClassName = com.mysql.jdbc.Driver spring.datasource.name = olabsenglishdb spring.datasource.username = xxxx spring.datasource.password = xxxx spring.datasource.driver-class-name = com.mysql.jdbc.Driver spring.jpa.database = mysql spring.jpa.database-platform = org.hibernate.dialect.MySQLDialect
swapyonubuntu

1
나는 같은 것을했다, intellij에서 응용 프로그램을 실행할 때 코드가 올바르게 작동하지만 항아리를 만들고 그것을 사용하여 실행할 때 java -jar myJar.jar동일한 오류가 발생합니다.
아나 스

1
안녕하세요 @AndyWilkinson 스프링 부트 카산드라 코드와 동일한 오류가 발생합니다. 나는 cassandra에 연결하려고합니다. 그리고 cassandra 연결에서는 spring.datasource.url = … spring.datasource.driver-class-name = …속성을 제공하지 않습니다 . 그래서 나는 @EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class})메인 클래스에 추가 했습니다. 그러나 이것을 넣은 후에는 오류가 발생 Parameter 0 of constructor in org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration required a bean of type 'javax.sql.DataSource' that could not be found.합니다. 도와주세요.
kumarhimanshu449

113

Spring Boot starter에서 임베디드 H2 데이터베이스를 사용하려면 아래 종속성을 pom 파일에 추가하십시오.

    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <version>1.3.156</version>
    </dependency>

그러나 의견에서 언급했듯이 임베디드 H2 데이터베이스는 데이터를 메모리에 보관하고 영구적으로 저장하지 않습니다.


2
spring-boot-starter-jdbc와 동일한 문제가있었습니다. 이 제안을 시도하고 내 문제를 해결했습니다.
bluecollarcoder

3
이것은 실제 솔루션이 아닙니다. H2는 내가 아는 한 데이터를 영구적으로 저장하지 않습니다.
SARose

10
@SARose-물론 그렇지 않습니다! "메모리 내"데이터베이스입니다.
user672009

1
@ user672009, 잘못되었습니다. H2는 인 메모리 데이터베이스 일뿐입니다. h2database.com/html/features.html을 참조하십시오 . 말했듯이, 이것은 문제에 대한 나쁜 해결책입니다.
Jason Nichols

5
누군가의 응용 프로그램을 만들려고하는데 "데이터베이스 유형 NONE에 대해 결정할 수 없습니다." 다른 솔루션을 시도한 후이 솔루션을 시도하면 작동합니다. 앱은 속성으로 구성된 두 개의 DB를 사용하도록 만들어졌습니다. 구성했지만이 오류가 발생했습니다. H2 종속성을 추가 한 후에는 더 이상 오류가 없습니다. 응용 프로그램은 내가 지정한 다른 DB를 사용하며 AFAICT H2에는 아무것도 없습니다. 스프링 부트의 부작용이거나이 앱의 디자인에 문제가있을 수 있지만 시작하기 전에 H2가 필요합니다. 다른 사람들 이이 문제를 가지고 있기 때문에이 응용 프로그램 일 수는 없습니다.
LS

87

나는 같은 문제를 겪었고 DataSourceAutoConfiguration을 제외하면 문제가 해결되었습니다.

@SpringBootApplication
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
public class RecommendationEngineWithCassandraApplication {

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

3
감사! 다음 application.properties과 같이 구성 할 수 있습니다.spring.main.web-environment=false
zhuguowei

1
@EnableAutoConfigurationSpringBoot 이외의 응용 프로그램 클래스에서 찾았 으며 제외도 추가해야했습니다. TBH, 아마 @EnableAutoConfiguration처음부터 거기에 필요하지 않을 것입니다 : /
cs94njw

63

이것은 나를 위해 일했습니다 (1.3.0.M5) :

import org.springframework.boot.autoconfigure.jdbc.*;
import org.springframework.boot.autoconfigure.orm.jpa.*;

@Configuration
@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class})
public class Application {

두 클래스를 모두 제외하십시오.

그것은 작동하지 않았다

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class})

7
이것은 그들이 왜 안될 때 (예를 들어, 데이터베이스 액세스가 다른 응용 프로그램에 의해 처리되고이 클라이언트가 단지 '클라이언트'일 때) 자신의 응용 프로그램에서 '신비하게'데이터베이스 액세스가 필요한 이유를 이해하지 못하는 사람들을위한 것입니다.
cst1992

31

추가 할 수 있습니다

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

당신에 application.properties파일.


2
jdbc 데이터 소스가 필요하지 않은 경우 허용되는 답변이어야합니다.
Farrukh Najmi

이 기능은 여러 개의 프로필이 있고 그 중 하나가 메모리에있을 때 특히 유용합니다.
Doe Johnson

나를 위해, 나는 또한 작동하기 위해 HibernateJpaAutoConfiguration을 제외해야했습니다 : spring.autoconfigure.exclude = org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration, org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration
AbdelRahmane

20

더 자세히 살펴보면 DataSource 문제가 청각 적이라고 생각합니다. 부팅의 최대 절전 모드 자동 구성이 트리거되고 있으므로 데이터 소스가 필요합니다. spring-boot-starter-data-jpa끌어 들이는 의존성이 있기 때문에 최대 절전 모드가 클래스 경로 에 hibernate-entitymanager있습니다.

spring-boot-starter-data-jpa최대 절전 모드를 제외하도록 종속성을 업데이트하십시오 .

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
        </exclusion>
    </exclusions>
</dependency>

1
여전히 같은 오류 :-(
quarks

제외를 올바르게 적용 했습니까? mvn dependency : tree는 확인하는 데 도움이됩니다. 배제로 DataSource 문제는 사라졌습니다 (이제 "모범 demo.core.entity.Resource는 알려진 관리 유형이 아닙니다"를 참조하십시오)
Andy Wilkinson

안녕 앤디 내가 게시 한 실제 프로젝트를 테스트했음을 의미합니까? 유망 보인다
쿼크

1
네, 그것은 당신이 게시 한 프로젝트와 관련이 있습니다. 내가 한 유일한 변경 사항은 위에서 설명한대로 최대 절전 모드 제외를 추가하는 것입니다.
Andy Wilkinson 2018 년

쿨, 당신이 컴파일 한 것이 마스터 브랜치 또는 JPA 브랜치 인 것 같습니다.
quarks 2018 년

14

로부터 봄 설명서 .

Spring Boot는 임베디드 H2, HSQL 및 Derby 데이터베이스를 자동 구성 할 수 있습니다. 연결 URL을 제공 할 필요는 없으며 사용하려는 내장 데이터베이스에 대한 빌드 종속성을 포함하기 만하면됩니다.

예를 들어 일반적인 POM 종속성은 다음과 같습니다.

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

spring-boot-starter-data-jpa 의존성을 제외하고 spring-boot-starter-jdbc 의존성을 사용하면 h2 (또는 hsqldb)가 종속성으로 포함되어있는 한 매력처럼 작동했습니다.


9

스프링 부트는 application.properties 파일에서 datasoure 속성을 찾습니다.

application.properties 또는 yml 파일에 정의하십시오

application.properties

spring.datasource.url=xxx
spring.datasource.username=xxx
spring.datasource.password=xxx
spring.datasource.driver-class-name=xxx

고유 한 구성이 필요한 경우 고유 한 프로파일을 설정하고 Bean 작성 중에 데이터 소스 값을 사용할 수 있습니다.



5

Spring Data를 사용하여 ElasticSearch 용 API를 수행하는 동안이 예외에 직면했습니다. 나는 다음을했고 효과가 있었다.

@SpringDataApplication(exclude = {DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class})

3

org.springframework.data의 groupId와 두 가지 종속성이 있었고 jpa를 제거하고 mongodb 만 유지했으며 작동했습니다!

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

2

@AutoConfigureTestDatabase (replace = Replace.NONE)를 추가하면 문제가 해결됩니다.

@RunWith(SpringRunner.class)
@DataJpaTest
@AutoConfigureTestDatabase(replace=Replace.NONE)
public class TestClienteRepository {

}

2

o.s.b.d.LoggingFailureAnalysisReporter"APPLICATION FAILED TO START"메시지와 함께 제목에 오류 메시지가 나타납니다 . -Dspring.profiles.active=devEclipse 디버그 구성에 추가되지 않았 으므로 활성 프로파일이 없었습니다.


1
정확히 내 문제도. 디버그 구성의 VM 인수에 플래그 추가 ( Run -> Debug configurations... -> Maven build -> [build name] -> JRE -> VM arguments)
sshow

2

나도 같은 문제에 직면했다.

Cannot determine embedded database driver class for database type NONE.

필자의 경우 데이터베이스에 해당하는 저장소에서 jar 파일을 삭제하면 문제가 해결됩니다. 저장소에 손상된 jar이있어서 문제를 일으켰습니다.


1

필자의 경우, 내 pom에 org.jasig.cas에 대한 maven 종속성을 최대 절전 종속성을 트리거하고 Spring Boot가 최대 절전 모드 지속성을 자동 구성하기 위해 데이터 소스를 찾도록했습니다. user672009에서 제안한대로 com.h2database maven 종속성을 추가하여 문제를 해결했습니다. 고마워요!


1

이것은이 오류에 대해 Google에 반환 된 첫 번째 주제 중 하나이므로 누군가가 같은 문제에 직면 한 경우 내가 한 일을 게시 할 것입니다. DataSourceAutoConfiguration메모리 데이터베이스를 사용 하지 않고 배제하고 싶지 않았습니다 .

내 경우에는 다른 응답자가 말한 것처럼 매개 변수를 설정했지만 application.properties파일이 잘못된 폴더 안에 있습니다 .. lol

따라서 이와 같이 작동하지 않는 경우 파일이 내부에 있는지 확인하십시오 src/main/resources! 내 경우에는src/main/resources/static


1

대답은 매우 간단합니다. SpringBoot는 Embeddable 데이터베이스 드라이버를 찾습니다. XML 또는 주석 형식으로 구성을 구성하지 않으면이 예외가 발생합니다. 주석을 다음과 같이 변경하십시오.

@EnableAutoConfiguration(exclude=DataSourceAutoConfiguration.class)
이것은 DataSourceAutoConfiguration을 제외합니다. 클래스를 올바르게 구성하면 Perfect Simple Coding 완료가 작동합니다.

    @Controller
    @EnableAutoConfiguration(exclude=DataSourceAutoConfiguration.class)
     public class SimpleController {
      @RequestMapping("/")
      @ResponseBody
       String home() {
        return "Hello World!";
       }public static void main(String[] args) throws Exception {
        SpringApplication.run(SimpleController.class, args);
       }
    }



1

프로젝트 종속성으로 "spring-boot-starter-data-jpa"가 필요하고 동시에 앱이 데이터베이스에 액세스하지 못하게하려면 자동 구성 클래스를 제외하면됩니다.

@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)

1

위에서 언급 한 모든 것을 시도했지만 문제를 해결할 수 없습니다. SQLite를 사용하고 있으며 SQLite 파일이 resources 디렉토리에 있습니다.

a) IDE 설정 완료

내 프로젝트의 .classpath 파일에 아래 줄을 수동으로 추가해야합니다.

<classpathentry kind="src" path="resources"/>
<classpathentry kind="output" path="target/classes"/>

그 후 상단의 MenuBar에서 프로젝트를 새로 고치고 정리했습니다. 프로젝트-> 청소-> 내 프로젝트 이름과 같습니다.

그 후 프로젝트를 실행하고 문제가 해결되었습니다.

내 프로젝트의 application.properties

spring.datasource.url=jdbc:sqlite:resources/apiusers.sqlite
spring.datasource.driver-class-name=org.sqlite.JDBC
spring.jpa.properties.hibernate.dialect=com.enigmabridge.hibernate.dialect.SQLiteDialect
spring.datasource.username=
spring.datasource.password=
spring.jpa.hibernate.ddl-auto=update

b) Jar 배포에서 동일한 오류가 발생하면 설정 완료

pom.xml에 다음 줄을 추가해야합니다.

  <build>
        <resources>
        <resource>
            <directory>resources</directory>
            <targetPath>${project.build.outputDirectory}</targetPath>
            <includes>
                <include>application.properties</include>
            </includes>
        </resource>
    </resources>
</build>

누군가에게 도움이 될 수 있습니다.


1

응용 프로그램에 데이터베이스가 없으면 아래 주석을 추가하여 데이터 소스의 자동 구성을 비활성화하십시오.

@SpringBootApplication(exclude={DataSourceAutoConfiguration.class})

1

@Anas와 동일합니다. Eclipse에서 실행할 수는 있지만 "java -jar ..."를 사용하면이 오류가 발생합니다. 그런 다음 Java 빌드 경로가 잘못되어 "src / main / resources"폴더가 누락되어 응용 프로그램에서 application.properties를 찾을 수 없습니다. Java 빌드 경로에 "src / main / resources"폴더를 추가하면 제대로 작동합니다.

또한 애플리케이션 클래스에 "@PropertySource ({"application.properties "})"를 추가해야합니다.

스크린 샷 -1

스크린 샷 -2


감사! 나는 4 시간 동안 노력했다
Santiago Martí Olbrich

1

이것이 내가이 문제를 해결 한 방법입니다.

필자의 경우 : 외부 서버 인 MySQL 서버의 데이터 소스를 구성해야했습니다.

우리 모두 알다시피, Spring 부트에는 임베디드 데이터베이스에 대해 DataSource를 자동 구성하는 기능이 있습니다.

따라서 사용자 지정 구성을 사용하려면 데이터 소스 자동 구성을 비활성화해야한다는 것을 깨달았습니다.

많은 사람들이 위에서 언급했듯이 application.properties에서 Spring Boot의 자동 데이터 소스 구성을 비활성화했습니다.

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

모든 최대 절전 모드 구성 속성을 별도의 파일에 정의했습니다. hibernate-mysql.properties

그런 다음 다음과 같은 방식으로 내 사용자 지정 최대 절전 모드 구성을 코딩하여 문제를 해결했습니다.

사용자 정의 특성 파일의 특성을 기반으로 원하는 데이터 소스를 구성하고 LocalSessionFactoryBean을 데이터 소스 및 기타 최대 절전 모드 구성으로 채우는 방법.

최대 절전 모드 사용자 정의 구성 클래스 :
--------------------------------------------- -------------

최대 절전 모드 사용자 정의 구성


1

아래의 종속성을 사용하십시오.

<dependency>
   <groupId>com.h2database</groupId>
   <artifactId>h2</artifactId>
   <scope>runtime</scope>
</dependency>

데이터베이스가 필요없고이 오류가 발생했습니다. 나는 이것을 추가하고 고쳤다.
markthegrea

1

필자의 경우 IDEA를 사용하여 out이혼 을 제거한 후 모든 것이 정상으로 돌아갑니다. 왜 그런지 모르겠지만 문제가 해결되었습니다.


1

비슷한 문제가 있고 DataSourceAutoConfiguration 및 HibernateJpaAutoConfiguration을 제외하면 문제가 해결되었습니다.

내 application.properties 파일 에이 두 줄을 추가했으며 작동했습니다.

> spring.autoconfigure.exclude[0]=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
> spring.autoconfigure.exclude[1]=org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration

1

이미 충분한 답변이 게시되었습니다. 그러나 내가 한 실수와 수정 방법을 게시하고 있습니다.

내 경우에는 pom대신 프로젝트를 패키지했습니다.jar

pom.xml :

...
 <packaging>pom</packaging>
...

로 변경:

...
 <packaging>jar</packaging>
...

실수가 같은 사람에게 도움이 될 수 있습니다.


0

Maven Repository 에서 derby-10.10.1.1.jar을 다운로드 하여이 Application / WEB-INF / lib / derby-10.10.1.1.jar와 같이 WEB-INF / lib 폴더에 배치 할 수 있습니다. 임베디드 AnnotationConfigEmbeddedWebApplicationContext가 데이터베이스 드라이버를 선택하고 웹 서버가 아무런 문제없이 실행되기 시작합니다 :-)


0

Gradle을 사용하는 경우 다음과 같이 올바른 드라이버 병을 포함하십시오.

compile("org.mongodb:mongo-java-driver:3.3.0")

또는 Maven을 사용하는 경우 Maven 스타일로 수행하면 문제가 해결됩니다.


0

벽에 머리를 두드리는 몇 시간 후에이 실에오고있는 사람에게. 변경 하여이 오류를 해결했습니다.

create table `group`(
    id char(19) primary key
);

create table if not exists `group`(
    id char(19) primary key
);

resources 디렉토리의 schema.sql 파일에 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.