web-dev-qa-db-fra.com

Spring Boot - Impossible de déterminer la classe de pilote de base de données intégrée pour le type de base de données NONE

Voici l'erreur générée lors de la tentative d'exécution de mon application 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)

Je pense avoir la bonne combinaison de bocaux datanucleus-appengine et datanucleus:

2.1: Nécessite DataNucleus 3.1.x (core, api-jdo, api-jpa, enhancer). Nécessite le SDK 1.6.4+ Notez que cette version de Datanucleus n’est plus pris en charge par le projet DataNucleus

Configuration de l'application 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>

Je me demande ce qui pourrait manquer dans mon application? J'ai suivi les instructions à partir d'ici Utilisation de Spring Data JPA sur Google Appengine

183
xybrek

Vous n'avez pas fourni suffisamment d'informations à Spring Boot pour configurer automatiquement une DataSource. Pour ce faire, vous devez ajouter des propriétés à application.properties avec le préfixe spring.datasource. Examinez DataSourceProperties pour voir toutes les propriétés que vous pouvez définir. 

Vous devrez fournir l'URL et le nom de la classe de pilote appropriés:

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

Si vous souhaitez utiliser la base de données H2 intégrée à partir du démarreur Spring Boot, ajoutez la dépendance ci-dessous à votre fichier pom.

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

Mais comme mentionné dans les commentaires, la base de données H2 intégrée conserve les données en mémoire et ne les stocke pas de manière permanente.

102
user672009

J'aurais le même problème et l'exclusion de DataSourceAutoConfiguration a résolu le problème. 

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

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

Cela a fonctionné pour moi (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 {

Exclure les deux classes.

Cela n'a pas fonctionné avec

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

Vous pouvez ajouter 

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

dans votre fichier application.properties.

21
redoff

Maintenant que je regarde de plus près, je pense que le problème de la source de données est une source de confusion. La configuration automatique de Hibernate de Boot est en train de se déclencher et c'est pourquoi un DataSource est requis. Hibernate est sur le chemin de classe parce que vous avez une dépendance sur spring-boot-starter-data-jpa qui extrait hibernate-entitymanager.

Mettez à jour votre dépendance spring-boot-starter-data-jpa pour exclure 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>
18
Andy Wilkinson

À partir du Manuel Spring .

Spring Boot peut configurer automatiquement les bases de données H2, HSQL et Derby intégrées. Vous n'avez pas besoin de fournir d'URL de connexion, il vous suffit d'inclure une dépendance de construction à la base de données intégrée que vous souhaitez utiliser.

Par exemple, les dépendances POM typiques seraient:

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

Pour moi, laisser de côté la dépendance spring-boot-starter-data-jpa et utiliser simplement la dépendance spring-boot-starter-jdbc fonctionnait à merveille, du moment que h2 (ou hsqldb) était inclus en tant que dépendances.

14
Arturo Araya

Le démarrage du printemps cherchera des propriétés datasoure dans le fichier application.properties.

Veuillez le définir dans le fichier application.properties ou yml

application.properties

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

Si vous avez besoin de votre propre configuration, vous pouvez définir votre propre profil et utiliser les valeurs de la source de données lors de la création du bean.

9
Vino

Je ne sais pas s'il est trop tard pour répondre. Je pourrais résoudre ce problème en excluant DataSourceAutoConfiguration à partir du printemps.

7
bcsshdha

J'ai fait face à cette exception alors que je réalisais des API pour ElasticSearch en utilisant Spring Data. J'ai fait ce qui suit et cela a fonctionné.

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

J'ai eu deux dépendances avec groupId de org.springframework.data, puis j'ai supprimé jpa et gardé mongodb uniquement, et cela a fonctionné!

<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

Je résous mon problème en ajoutant simplement @AutoConfigureTestDatabase (replace = Replace.NONE)

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

}
2
Virmerson

J'ai reçu le message d'erreur dans le titre de o.s.b.d.LoggingFailureAnalysisReporter avec le message "APPLICATION FAILED TO START". Il s'est avéré que je n'avais pas ajouté -Dspring.profiles.active=dev à ma configuration de débogage Eclipse, je n'avais donc aucun profil actif.

2
Noumenon

Moi aussi j'ai fait face au même problème. 

Cannot determine embedded database driver class for database type NONE.

Dans mon cas, la suppression du fichier jar du référentiel correspondant à la base de données corrige le problème. Un pot corrompu était présent dans le référentiel, ce qui causait le problème. 

2
naresh goyal

Dans mon cas, j’ai mis une dépendance maven pour org.jasig.cas dans mon pom qui a déclenché une dépendance hibernate et qui a poussé Spring Boot à rechercher une source de données pour la configuration automatique de la persistance hibernate . dépendance maven com.h2database comme suggéré par user672009. Merci les gars!

1
user3796391

Comme il s’agit de l’un des premiers sujets renvoyés dans Google pour cette erreur, je publierai ce que j’avais fait au cas où quelqu'un rencontrerait le même problème ... Je ne voulais pas exclure DataSourceAutoConfiguration ni utiliser une base de données en mémoire. 

Dans mon cas, je définissais les paramètres comme le disaient les autres réplicateurs, mais le fichier application.properties était dans le mauvais dossier. Lol

Donc, si rien ne fonctionne de la sorte, vérifiez si le fichier est à l'intérieur de src/main/resources! Dans mon cas, c'était à l'intérieur de src/main/resources/static

1
Felipe S.

Si vous avez vraiment besoin de "spring-boot-starter-data-jpa" en tant que dépendance du projet et si vous ne souhaitez pas permettre à votre application d'accéder à une base de données, vous pouvez simplement exclure les classes de configuration automatique.

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

Utilisez cette dépendance ci-dessous.

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

Faire ci-dessous fonctionne. 

@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})

Mais si je voulais avoir DataSource, je ne devrais pas faire la configuration ci-dessus. Le lien ci-dessous indique que nous avons besoin de toutes les propriétés du fichier application.properties. Toutes les propriétés doivent commencer par spring.datasource.*

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

1
Anil

La réponse est très simple, SpringBoot recherchera un pilote de base de données incorporable. Si vous ne configurez aucune configuration sous forme XML ou d'annotations, cette exception sera levée. .

@EnableAutoConfiguration(exclude=DataSourceAutoConfiguration.class)
ceci exclura la DataSourceAutoConfiguration . Et l'achèvement de Perfect Simple Coding fonctionnerait si vous avez correctement configuré votre classe .
@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
Praveen Kumar K S

J'ai essayé toutes les choses mentionnées ci-dessus mais je n'ai pas pu résoudre le problème. J'utilise SQLite et mon fichier SQLite se trouvait dans le répertoire des ressources.

a) Configuration effectuée pour IDE

J'ai besoin d'ajouter manuellement les lignes ci-dessous dans le fichier .classpath de mon projet.

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

Après cela, j'ai actualisé et nettoyé le projet de la barre de menus en haut. comme Projet-> Nettoyer-> Nom de mon projet.

Après cela, je lance le projet et le problème est résolu.

application.properties pour mon projet est

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) La configuration est terminée si le déploiement du conteneur génère la même erreur

Vous devez ajouter les lignes suivantes à votre pom.xml

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

Peut-être que cela peut aider quelqu'un.

1
Bagesh Sharma

Dans mon cas, en utilisant IDEA, après avoir supprimé le répertoireout, tout redevient normal. Je ne sais tout simplement pas pourquoi, mais ça a fonctionné.

1
Leo Lee

si vous n'avez aucune base de données dans votre application, désactivez simplement la configuration automatique de la source de données en ajoutant l'annotation ci-dessous.

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

Déjà assez de réponses ont été postées. Cependant, je poste ce que j'ai fait et comment je l'ai corrigé.

Dans mon cas, j'avais empaqueté mon projet sous la forme pom au lieu de jar

pom.xml:

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

Changé en:

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

Cela peut être utile pour quelqu'un avec la même erreur.

0
Sangeeth

Cliquez avec le bouton droit sur le projet et sélectionnez l'option suivante Maven -> Mettre à jour le projet. Cela a résolu mon problème.

0
greenhorn

Généralement, une telle erreur se produit lorsque vous utilisez JPA et oubliez d'ajouter une connexion à une base de données. Vous devez donc ajouter des dépendances liées à la base de données dans votre application. 

Bien que vous souhaitiez utiliser JPA sans connecter de base de données externe, ajoutez ensuite hsqldb dans votre dépendance.

J'espère que ça aide!

0
imbond

Voici comment j'ai résolu ce problème.

Dans mon cas: je devais configurer la source de données pour MySQL Server, qui était un serveur externe. 

Comme nous le savons tous, Spring Boot est capable de configurer automatiquement DataSource pour les bases de données intégrées.

Ainsi, je me suis rendu compte que je devais désactiver la configuration automatique de la source de données pour utiliser ma configuration personnalisée.

Comme mentionné ci-dessus par de nombreuses personnes, j'ai désactivé la configuration automatique de la source de données de Spring Boot sur application.properties.

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

J'ai défini toutes les propriétés de configuration hibernate dans un fichier séparé: Hibernate-mysql.properties

Ensuite, j’ai codé ma propre configuration Hibernate personnalisée de la manière suivante et le problème a été résolu. 

Ma façon de configurer la source de données souhaitée en fonction des propriétés dans un fichier de propriétés personnalisées et de remplir votre LocalSessionFactoryBean avec votre source de données et une autre configuration de veille prolongée 

Classe de configuration personnalisée Hibernate: -
------------------------------------------------- ------------

Configuration personnalisée Hibernate

0
Philip Dilip

Même chose pour @Anas. Je peux l'exécuter dans Eclipse, mais lorsque j'utilise "Java -jar ...", lancez-le, cela me donne cette erreur. Ensuite, je trouve que mon chemin de génération Java est incorrect, le dossier «src/main/resources» est manquant. L'application ne trouve donc pas application.properties. Lorsque j’ajoutais le dossier «src/main/resources» dans le chemin de construction de Java, cela fonctionnait.

Et vous devez ajouter "@PropertySource ({" application.properties "})" dans votre classe d'application.

Capture d'écran-1

Capture d'écran-2

0
谢兆鑫

Supprimer C:\Users\admin\.IntelliJIdea2018.1\system\compile-server

0
www314599782

Je voudrais le problème similaire et l'exclusion de DataSourceAutoConfiguration et HibernateJpaAutoConfiguration a résolu le problème.

J'ai ajouté ces deux lignes dans mon fichier application.properties et cela a fonctionné.

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

Si vous utilisez Gradle, incluez le pot droit du pilote comme ci-dessous:

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

Ou si vous utilisez Maven, faites-le à la manière de Maven, cela devrait résoudre votre problème.

0
RWork

Vous pouvez télécharger le fichier derby-10.10.1.1.jar à partir du référentiel Maven et le placer dans votre dossier WEB-INF/lib, comme dans cette application/WEB-INF/lib/derby-10.10.1.1.jar . Votre AnnotationConfigEmbeddedWebApplicationContext intégré récupérera le pilote de la base de données et votre serveur Web commencera à fonctionner sans aucun problème :-)

0
Praveen Kumar K S

À tous ceux qui viennent sur ce fil après des heures passées à se cogner la tête contre un mur. J'ai résolu cette erreur en changeant

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

à 

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

dans mon fichier schema.sql dans le répertoire des ressources.

0
decapo