Spring Boot-データベースタイプNONEの組み込みデータベースドライバークラスを判別できません


210

これは、私のWebアプリを実行しようとするとスローされるエラーです。

[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-appenginedatanucleusjarの適切な組み合わせがあると思います。

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";
    }

}

POM:

<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を使用しました


[INFO] WARNING::失敗metricFilter:org.springframework.beans.factory.NoSuchBeanDefinitionException:@EnableAutoConfiguration I入手アウト私のコメントが'metricFilter'という名前のないBeanが定義されている
クォーク

これが完全なコードです:bit.ly/1i53oAq
クォーク

回答:


170

Spring Bootにを自動構成するための十分な情報が提供されていませんDataSource。そのためにはapplication.propertiesspring.datasource接頭辞を付けていくつかのプロパティを追加する必要があります。見てみましょうDataSourcePropertiesあなたが設定できるすべてのプロパティを参照してください。

適切なURLとドライバークラス名を指定する必要があります。

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

3
ここに何を入れればよいかわからないDataNucleus + Google App Engineを使用しています
クォーク

@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でアプリケーションを実行するとコードは正常に機能しますが、jarを作成してそれを使用しjava -jar myJar.jarて実行すると、同じエラーが発生します。
Anas 2017

1
こんにちは@AndyWilkinson私は私のスプリングブートカサンドラコードで同じエラーに直面しています。そこでカサンドラに接続しようとしています。また、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スターターから組み込みH2データベースを使用する場合は、pomファイルに以下の依存関係を追加します。

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

しかし、コメントで述べたように、埋め込まれたH2データベースはデータをメモリに保持し、永続的に保存しません。


2
私はspring-boot-starter-jdbcで同じ問題を抱えていました。この提案を試したところ、問題が解決しました。
bluecollarcoder 2015年

3
これは実際の解決策ではありません。H2は、私の知る限り、データを永続的に保存しません。
SARose

10
@SARose-もちろんそうではありません!これは「メモリ内」のデータベースです。
user672009

1
@ user672009、不正解。H2はメモリ内データベースだけではありません。h2database.com/html/features.htmlを参照してください。そうは言っても、これは問題に対する不十分な解決策です。
Jason Nichols、2015

5
誰かのアプリを作成しようとしていますが、「データベースタイプNONEの...を特定できません」というエラーが表示されます。他の解決策を試した後、私はこれを試してみましたが、うまくいきました。アプリは、プロパティで構成された2つのDBを使用するように作成されました。設定しましたが、このエラーが発生しました。H2依存関係を追加すると、エラーは発生しなくなります。アプリは私が指定した他のDBを使用しますが、H2、AFAICTには何も進みません。スプリングブートの副作用またはこのアプリのデザインの問題の可能性がありますが、開始する前にH2が必要です。他の人がこの問題を抱えているので、それはこのアプリだけではありません。
LS

87

私は同じ問題を抱えていて、DataSourceAutoConfigurationを除外すると問題が解決しました。

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

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

3
ありがとう!で、それをconfigの可能性application.propertiesのような、spring.main.web-environment=false
zhuguowei

1
@EnableAutoConfigurationSpringBootApplication以外のクラスで見つかり、excludeも追加する必要がありました。TBH、私はおそらくそもそも必要ないでしょう@EnableAutoConfiguration:/
cs94njw 2018

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

これは、複数のプロファイルがあり、そのうちの1つがメモリ内にある場合に特に便利です。
Doe Johnson

私にとっては、私は仕事への順序でもHibernateJpaAutoConfigurationをexluseするために必要な:spring.autoconfigure.exclude = org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration、org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration
AbdelRahmane

20

よく見てみると、DataSourceの問題は深刻な問題だと思います。ブートのHibernate自動構成がトリガーされているため、DataSourceが必要になります。Hibernateはクラスパス上にspring-boot-starter-data-jpaありますhibernate-entitymanager。これは、がプルする依存関係があるためです。

spring-boot-starter-data-jpa依存関係を更新してHibernateを除外します。

<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
エラーはまだ同じです:-(
クォークが

除外を適切に適用しましたか?mvn dependency:treeは、確認に役立ちます。除外が設定されたため、DataSourceの問題は解消されました(「タイプdemo.core.entity.Resourceは既知のマネージタイプではありません」と表示されますが、これは別の問題です)
Andy Wilkinson 14

こんにちはアンディ私が投稿した実際のプロジェクトをテストしたということですか?有望に見える
クォーク

1
はい、それはあなたが投稿したプロジェクトでした。私が行った唯一の変更は、上記のようにHibernate除外を追加することでした。
アンディウィルキンソン

かっこいい、コンパイルしたのはmasterブランチ、またはJPAブランチだったようですね。
クォーク

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>

依存関係としてh2(またはhsqldb)が含まれている限り、spring-boot-starter-data-jpa依存関係を省略して、spring-boot-starter-jdbc依存関係を使用するだけで魅力的に機能しました。


9

Springブートは、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に2つの依存関係があり、次に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 '31

2

私も同じ問題に直面しました。

Cannot determine embedded database driver class for database type NONE.

私の場合、データベースに対応するリポジトリからjarファイルを削除すると、問題が解決します。問題の原因となっているリポジトリに破損したjarが存在していました。


1

私の場合、私はorg.jasig.casのmaven依存関係をpomに入れました。これにより、休止状態の依存関係がトリガーされ、Spring Bootがデータソースを探して休止状態の永続性を自動構成しました。user672009の提案に従って、com.h2database maven依存関係を追加することで解決しました。みんなありがとう!


1

これはこのエラーに対してGoogleで最初に返されるトピックの1つなので、誰かが同じ問題に直面した場合に備えて何をしたかを投稿しDataSourceAutoConfigurationます。メモリデータベースの使用も除外したくありません。

私の場合、他の回答者が言ったようにパラメータを設定していましたが、application.propertiesファイルは間違ったフォルダ内にありました。

したがって、このようなものが機能しない場合は、ファイルが内部にあるかどうかを確認してくださいsrc/main/resources!私の場合、それは中にありましたsrc/main/resources/static


1

答えは非常に簡単です。SpringBootは埋め込み可能なデータベースドライバーを探します。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

以下を行うことで動作します。

@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})

しかし、dataSourceが必要な場合は、上記の構成を行うべきではありません。以下のリンクは、application.propertiesファイルのすべてのプロパティが必要であることを示しています。すべてのプロパティは spring.datasource.*

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


1

プロジェクトの依存関係として「spring-boot-starter-data-jpa」が本当に必要であると同時に、アプリがデータベースにアクセスすることを許可したくない場合は、単純に自動構成クラスを除外できます。

@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)

1

上記のことをすべて試しましたが、問題を解決できませんでした。SQLiteを使用していますが、SQLiteファイルはリソースディレクトリにありました。

a)IDEの設定が完了しました

プロジェクトの.classpathファイルに以下の行を手動で追加する必要があります。

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

その後、上部のメニューバーからプロジェクトを更新してクリーンアップしました。Project-> Clean-> My Project Nameのように。

その後、プロジェクトを実行して問題を解決しました。

私のプロジェクトの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を見つけることができません。「src / main / resources」フォルダをJavaビルドパスに追加すると、機能しました。

また、アプリケーションクラスに「@PropertySource({"application.properties"})」を追加する必要があります。

スクリーンショット-1

スクリーンショット-2


ありがとう!私は4時間試しました
サンティアゴマルティ

1

これが私がこの問題を解決した方法です。

私の場合:外部サーバーであるMySQLサーバーのデータソースを設定する必要がありました。

誰もが知っているように、Springブートには、組み込みデータベースのDataSourceを自動構成する機能があります。

したがって、カスタム構成を使用するにはデータソースの自動構成を無効にする必要があることに気付きました。

多くの人が前述したように、私はapplication.propertiesでSpring Bootの自動DataSource構成を無効にしました

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

すべてのhibernate構成プロパティを別のファイルに定義しました:hibernate-mysql.properties

次に、独自のカスタムHibernate構成を次のようにコーディングし、問題を解決しました。

カスタムプロパティファイルのプロパティに基づいて目的のDataSourceを構成し、LocalSessionFactoryBeanにデータソースとその他の休止状態の構成を設定する方法。

Hibernateカスタム構成クラス:
--------------------------------------------- -------------

Hibernateカスタム構成


1

以下の依存関係を使用します。

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

データベースは必要なく、このエラーが発生していました。これを追加して修正しました。
markthegrea 2018

1

私の場合、IDEAを使用して、outディレクトリを削除した後、すべてが正常に戻ります。理由はわかりませんが、うまくいきました。


1

私は同様の問題を抱えていて、DataSourceAutoConfigurationとHibernateJpaAutoConfigurationを除外すると問題が解決しました。

私はapplication.propertiesファイルにこれらの2行を追加しましたが、うまくいきました。

> 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

derby-10.10.1.1.jarをMavenリポジトリーからダウンロードして、このApplication / WEB-INF / lib / derby-10.10.1.1.jarのようにWEB-INF / libフォルダーに配置できます。埋め込まれたAnnotationConfigEmbeddedWebApplicationContextはデータベースドライバーをピックアップし、Webサーバーは問題なく実行を開始します:-)


0

Gradleを使用している場合は、以下のようにドライバーの正しいjarを含めます。

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.