IT story

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

hot-time 2020. 5. 11. 08:07
반응형

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


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

[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 사용


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

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

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

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

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

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


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

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

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

이것은 나를 위해 일했습니다 (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})

추가 할 수 있습니다

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

당신에 application.properties파일.


더 자세히 살펴보면 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>

로부터 봄 설명서 .

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)가 종속성으로 포함되어있는 한 매력처럼 작동했습니다.


스프링 부트는 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 작성 중에 데이터 소스 값을 사용할 수 있습니다.


답변하기에 너무 늦었다면 아닙니다. 스프링 부트에서 DataSourceAutoConfiguration을 제외 하여이 문제를 해결할 수 있습니다.


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>

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

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

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

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

}

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


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

Cannot determine embedded database driver class for database type NONE.

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


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


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

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

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


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

@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);
       }
    }


아래 작업을 수행하십시오.

@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})

그러나 dataSource를 원한다면 위의 구성을 수행해서는 안됩니다. 아래 링크는 application.properties 파일의 모든 속성이 필요하다는 것을 나타냅니다. 모든 속성은spring.datasource.*

http://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html


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

@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)

위에서 언급 한 모든 것을 시도했지만 문제를 해결할 수 없습니다. 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>

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


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

@SpringBootApplication(exclude={DataSourceAutoConfiguration.class})

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

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

스크린 샷 -1

스크린 샷 -2


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

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

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

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

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

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

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

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

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

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

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


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

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

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


비슷한 문제가 있고 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

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


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

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

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


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

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

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

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


프로젝트를 마우스 오른쪽 버튼으로 클릭하고 다음 옵션 Maven-> Update Project를 선택하십시오. 이것은 내 문제를 해결했습니다.

참고 : https://stackoverflow.com/questions/24074749/spring-boot-cannot-determine-embedded-database-driver-class-for-database-type

반응형