it-swarm.com.de

Spring Boot - Die eingebettete Datenbanktreiberklasse kann für den Datenbanktyp NONE nicht ermittelt werden

Dies ist der Fehler, der beim Ausführen meiner Web-App ausgelöst wird:

[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)

Ich glaube, ich habe die richtige Kombination von datanucleus-appengine- und datanucleus-Gläsern:

2.1: Erfordert DataNucleus 3.1.x (Core, Api-Jdo, Api-Jpa, Enhancer). Erfordert SDK 1.6.4+ Beachten Sie, dass diese Version von Datanucleus nicht mehr .__ ist. unterstützt durch das DataNucleus-Projekt

JPA App Config:

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

Ich frage mich, was in meiner App fehlen könnte. Ich habe die Anweisungen von hier aus befolgt Spring Data JPA in Google Appengine verwenden

183
xybrek

Sie haben Spring Boot nicht genügend Informationen zur automatischen Konfiguration einer DataSource zur Verfügung gestellt. Dazu müssen Sie einige Eigenschaften zu application.properties mit dem Präfix spring.datasource hinzufügen. Schauen Sie sich DataSourceProperties an, um alle Eigenschaften anzuzeigen, die Sie festlegen können. 

Sie müssen den entsprechenden URL- und Treiberklassennamen angeben:

spring.datasource.url = …
spring.datasource.driver-class-name = …
151
Andy Wilkinson

Wenn Sie die eingebettete H2-Datenbank vom Spring Boot-Starter aus verwenden möchten, fügen Sie der Pom-Datei die folgende Abhängigkeit hinzu.

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

Wie in Kommentaren erwähnt, speichert die eingebettete H2-Datenbank Daten im Speicher und speichert sie nicht dauerhaft.

102
user672009

Ich hätte das gleiche Problem und das Ausschließen der DataSourceAutoConfiguration löste das Problem. 

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

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

Das hat für mich funktioniert (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 {

Beide Klassen ausschließen.

Es hat nicht funktioniert

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

Du kannst hinzufügen 

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

in Ihre application.properties-Datei.

21
redoff

Jetzt, wo ich genauer hinschaue, denke ich, dass das DataSource-Problem ein Hering ist. Die Hibernate-Autokonfiguration von Boot wird ausgelöst, und dies führt dazu, dass eine DataSource erforderlich ist. Der Ruhezustand befindet sich auf dem Klassenpfad, da Sie eine Abhängigkeit von spring-boot-starter-data-jpa haben, was hibernate-entitymanager zieht.

Aktualisieren Sie Ihre spring-boot-starter-data-jpa-Abhängigkeit, um den Ruhezustand auszuschließen:

<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>
18
Andy Wilkinson

Aus dem Spring Handbuch .

Spring Boot kann eingebettete H2-, HSQL- und Derby-Datenbanken automatisch konfigurieren. Sie müssen keine Verbindungs-URLs angeben. Fügen Sie einfach eine Build-Abhängigkeit zur eingebetteten Datenbank hinzu, die Sie verwenden möchten.

Typische POM-Abhängigkeiten wären zum Beispiel:

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

Wenn ich die Spring-Boot-Starter-data-jpa-Abhängigkeit ausließ und nur die Spring-Boot-Starter-jdbc-Abhängigkeit verwendete, funktionierte es wie ein Zauber, solange ich h2 (oder hsqldb) als Abhängigkeiten hatte.

14
Arturo Araya

Spring Boot sucht nach Datasoure-Eigenschaften in der Datei application.properties.

Bitte definieren Sie es in application.properties oder yml-Datei

application.properties

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

Wenn Sie eine eigene Konfiguration benötigen, können Sie Ihr eigenes Profil festlegen und die Datenquellenwerte während der Bean-Erstellung verwenden.

9
Vino

Ich weiß nicht, ob es zu spät ist, um zu antworten. Ich könnte dieses Problem lösen, indem ich DataSourceAutoConfiguration vom Spring Boot ausschließe.

7
bcsshdha

Ich war mit dieser Ausnahme konfrontiert, als ich APIs für ElasticSearch mit Spring Data erstellte. Ich habe folgendes getan und es hat funktioniert.

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

Ich hatte zwei Abhängigkeiten mit groupId von org.springframework.data, dann entfernte ich jpa und behielt nur mongodb, und es funktionierte!

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

Ich löse mein Problem durch Hinzufügen von @AutoConfigureTestDatabase (replace = Replace.NONE)

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

}
2
Virmerson

Ich habe die Fehlermeldung im Titel von o.s.b.d.LoggingFailureAnalysisReporter zusammen mit der Meldung "APPLICATION FAILED TO START" erhalten. Es stellte sich heraus, dass ich -Dspring.profiles.active=dev nicht zu meiner Eclipse-Debug-Konfiguration hinzugefügt hatte. Ich hatte also kein aktives Profil.

2
Noumenon

Auch ich stand vor demselben Problem. 

Cannot determine embedded database driver class for database type NONE.

In meinem Fall löst das Löschen der JAR-Datei aus dem Repository entsprechend der Datenbank das Problem. Im Repository war ein beschädigtes Glas vorhanden, das das Problem verursachte. 

2
naresh goyal

In meinem Fall habe ich eine große Abhängigkeit von org.jasig.cas in meinem Pom eingefügt, die eine Abhängigkeit vom Ruhezustand auslöste und dazu führte, dass Spring Boot nach einer Datenquelle suchte, um die Persistenz des Ruhezustands automatisch zu konfigurieren com.h2database Maven-Abhängigkeit, wie von user672009 vorgeschlagen. Danke Leute!

1
user3796391

Da dies eines der ersten in google zurückgegebenen Themen für diesen Fehler ist, werde ich veröffentlichen, was ich getan habe, falls jemand das gleiche Problem hat ... Ich wollte DataSourceAutoConfiguration nicht ausschließen und keine Speicherdatenbank verwenden. 

In meinem Fall habe ich die Parameter eingestellt, wie die anderen Replier sagten, aber die application.properties-Datei befand sich im falschen Ordner .. lol

Falls dies nicht funktioniert, prüfen Sie, ob sich die Datei in src/main/resources befindet! In meinem Fall war es in src/main/resources/static

1
Felipe S.

Wenn Sie wirklich "Spring-Boot-Starter-Data-JPA" als Projektabhängigkeit benötigen und gleichzeitig nicht möchten, dass Ihre App auf eine Datenbank zugreifen kann, können Sie Autokonfigurationsklassen einfach ausschließen

@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
1
Karol Król

Verwenden Sie diese Abhängigkeit unten.

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

Unten arbeiten geht. 

@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})

Wenn ich jedoch DataSource haben wollte, sollte ich die obige Konfiguration nicht durchführen. Der untenstehende Link sagt, dass wir alle Eigenschaften in der Datei application.properties benötigen. Alle Eigenschaften sollten mit spring.datasource.* beginnen.

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

1
Anil

Die Antwort ist sehr einfach. SpringBoot sucht nach eingebetteten Datenbanktreibern. Wenn Sie keine Konfiguration in Form von XML oder Anmerkungen vorgenommen haben, wird diese Ausnahme ausgelöst. Nehmen Sie die Änderungen in Ihrer Anmerkung folgendermaßen vor

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

Ich habe alle oben genannten Dinge ausprobiert, konnte das Problem jedoch nicht lösen. Ich verwende SQLite und meine SQLite-Datei befand sich im Ressourcenverzeichnis.

a) Einrichtung für IDE durchgeführt

Ich muss in der .classpath-Datei meines Projekts manuell folgende Zeilen hinzufügen.

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

Danach habe ich das Projekt in MenuBar oben aktualisiert und gereinigt. wie Projekt-> Reinigen-> Mein Projektname.

Danach führe ich das Projekt durch und löste das Problem.

application.properties für mein Projekt ist

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) Einrichtung erfolgt, wenn die Jar-Bereitstellung denselben Fehler auslöst

Sie müssen der pom.xml folgende Zeilen hinzufügen

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

Vielleicht kann es jemandem helfen.

1
Bagesh Sharma

In meinem Fall mit IDEA nach dem Entfernen des Verzeichnissesoutalles wieder normal. Ich weiß nur nicht warum, aber es hat geklappt.

1
Leo Lee

wenn Sie keine Datenbank in Ihrer Anwendung haben, deaktivieren Sie einfach die automatische Konfiguration der Datenquelle, indem Sie die folgende Anmerkung hinzufügen.

@SpringBootApplication(exclude={DataSourceAutoConfiguration.class})
0
Prashant Sharma

Es wurden bereits genug Antworten gepostet. Ich poste jedoch, welchen Fehler ich gemacht habe und wie ich ihn korrigiert habe.

In meinem Fall hatte ich mein Projekt als pom anstelle von jar gepackt.

pom.xml:

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

Gewechselt zu:

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

Es kann für jemanden mit dem gleichen Fehler hilfreich sein.

0
Sangeeth

Klicken Sie mit der rechten Maustaste auf das Projekt und wählen Sie die folgende Option Maven -> Projekt aktualisieren. Das hat mein Problem gelöst.

0
greenhorn

Im Allgemeinen tritt ein solcher Fehler auf, wenn Sie JPA verwendet haben und vergessen, eine Datenbankverbindung hinzuzufügen. Daher müssen Sie in Ihrer Anwendung datenbankbezogene Abhängigkeiten hinzufügen. 

Wenn Sie JPA verwenden möchten, ohne eine externe Datenbank anzuschließen, fügen Sie hsqldb in Ihre Abhängigkeit ein.

Ich hoffe das hilft!

0
imbond

So habe ich dieses Problem gelöst.

In meinem Fall: Ich musste die Datenquelle für MySQL Server konfigurieren, einen externen Server. 

Wie wir alle wissen, kann Spring Boot DataSource für eingebettete Datenbanken automatisch konfigurieren.

So wurde mir klar, dass ich die automatische Konfiguration der Datenquelle deaktivieren musste, um meine benutzerdefinierte Konfiguration verwenden zu können.

Wie von vielen schon erwähnt, habe ich die automatische DataSource-Konfiguration von Spring Boot unter application.properties deaktiviert

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

Ich habe alle Eigenschaften für den Ruhezustand in einer separaten Datei definiert: Hibernate-mysql.properties

Dann habe ich meine eigene angepasste Ruhezustandskonfiguration auf folgende Weise codiert und das Problem behoben. 

So können Sie die gewünschte DataSource basierend auf Eigenschaften in einer benutzerdefinierten Eigenschaftendatei konfigurieren und Ihre LocalSessionFactoryBean mit Ihrer Datenquelle und einer anderen Ruhezustandskonfiguration auffüllen. 

Hibernate-Klasse für benutzerdefinierte Konfiguration: -
----------------------------------------- ------------

Benutzerdefinierte Konfiguration im Ruhezustand

0
Philip Dilip

Dasselbe gilt für @Anas. Ich kann es in Eclipse ausführen, aber wenn ich "Java -jar ..." verwende, führe es aus, es gibt mir diesen Fehler. Dann finde ich, dass mein Java-Build-Pfad falsch ist, es fehlt der Ordner „src/main/resources“, sodass die Anwendung application.properties nicht finden kann. Wenn ich den Ordner "src/main/resources" im Java-Erstellungspfad hinzufüge, funktionierte es.

Und Sie müssen "@PropertySource ({" application.properties "})" in Ihrer Application-Klasse hinzufügen.

Screenshot-1

Screenshot-2

0
谢兆鑫

C:\Users\admin\.IntelliJIdea2018.1\system\compile-server löschen

0
www314599782

Ich hatte das ähnliche Problem und das Ausschließen der DataSourceAutoConfiguration und HibernateJpaAutoConfiguration löste das Problem.

Ich habe diese beiden Zeilen in meine Datei application.properties eingefügt, und es hat funktioniert.

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

Wenn Sie Gradle verwenden, fügen Sie das rechte Glas des Treibers wie folgt hinzu:

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

Wenn Sie Maven verwenden, tun Sie dies im Maven-Stil. Das Problem sollte dadurch gelöst werden.

0
RWork

Sie können die derby-10.10.1.1.jar aus dem Maven Repository herunterladen und in Ihrem Ordner WEB-INF/lib ablegen, z Ihr eingebetteter AnnotationConfigEmbeddedWebApplicationContext nimmt den Datenbanktreiber auf und Ihr Webserver wird ohne Probleme ausgeführt :-)

0

Für jeden, der nach stundenlangem Kopfschlagen gegen eine Wand zu diesem Faden kommt. Ich habe diesen Fehler durch Ändern gelöst

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

zu 

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

in meiner schema.sql-Datei im Ressourcenverzeichnis.

0
decapo