it-swarm.com.ru

Spring Boot - невозможно определить класс встроенного драйвера базы данных для типа базы данных NONE

Это ошибка, которая выдается при попытке запустить мое веб-приложение:

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

Я считаю, что у меня есть правильная комбинация datanucleus-appengine и datanucleus jars:

2.1: Требуется DataNucleus 3.1.x (ядро, api-jdo, api-jpa, энхансер). Требуется SDK 1.6.4+. Обратите внимание, что эта версия Datanucleus больше не поддерживается проектом DataNucleus

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>

Интересно, что может отсутствовать в моем приложении? Я следовал инструкциям отсюда Использование Spring Data JPA в Google Appengine

183
xybrek

Вы не предоставили Spring Boot достаточно информации для автоматической настройки DataSource. Для этого вам нужно добавить некоторые свойства в application.properties с префиксом spring.datasource. Взгляните на DataSourceProperties , чтобы увидеть все свойства, которые вы можете установить. 

Вам нужно будет указать соответствующий URL и имя класса драйвера:

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

Если вы хотите использовать встроенную базу данных H2 из Spring Boot starter, добавьте приведенную ниже зависимость в ваш pom-файл.

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

Но, как упоминалось в комментариях, встроенная база данных H2 хранит данные в памяти и не хранит их постоянно.

102
user672009

Я бы такую ​​же проблему, и исключая DataSourceAutoConfiguration, решил проблему. 

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

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

Это сработало для меня (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})
58
aliopi

Можете добавить 

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

в ваш файл application.properties.

21
redoff

Теперь, когда я посмотрю поближе, я думаю, что проблема источника данных - красная сельдь. Автоконфигурация Hibernate в Boot запускается, и именно поэтому требуется источник данных. 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>
18
Andy Wilkinson

Из весеннего руководства .

Spring Boot может автоматически настраивать встроенные базы данных H2, HSQL и Derby. Вам не нужно указывать URL-адреса подключения, просто включите зависимость сборки от встроенной базы данных, которую вы хотите использовать.

Например, типичные зависимости POM будут:

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

Для меня исключение зависимости spring-boot-starter-data-jpa и просто использование зависимости spring-boot-starter-jdbc работало как чудо, если в качестве зависимостей был включен h2 (или hsqldb).

14
Arturo Araya

Spring boot будет искать свойства данных в файле application.properties.

Пожалуйста, укажите это в файле application.properties или yml

application.properties

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

Если вам нужна ваша собственная конфигурация, вы можете установить свой собственный профиль и использовать значения источника данных при создании компонента.

9
Vino

Я не знаю, если уже слишком поздно, чтобы ответить. Я мог бы решить эту проблему, исключив DataSourceAutoConfiguration из весенней загрузки.

7
bcsshdha

Я столкнулся с этим исключением, когда создавал API для ElasticSearch, используя Spring Data. Я сделал следующее, и это сработало.

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

У меня было две зависимости с groupId org.springframework.data, затем я удалил 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>
3
xiaofeig

Я решаю свою проблему, просто добавив @AutoConfigureTestDatabase (replace = Replace.NONE)

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

}
2
Virmerson

Я получил сообщение об ошибке в заголовке от o.s.b.d.LoggingFailureAnalysisReporter вместе с сообщением «APPLICATION FAILED TO START». Оказалось, что я не добавил -Dspring.profiles.active=dev в свою конфигурацию отладки Eclipse, поэтому у меня не было активного профиля.

2
Noumenon

Я тоже столкнулся с той же проблемой. 

Cannot determine embedded database driver class for database type NONE.

В моем случае удаление файла JAR из репозитория, соответствующего базе данных, решает проблему. В хранилище присутствовал поврежденный кувшин, из-за которого возникла проблема. 

2
naresh goyal

В моем случае я поместил в свой pom зависимость maven для org.jasig.cas, которая вызвала зависимость hibernate и заставила Spring Boot искать источник данных для автоматической настройки персистентности hibernate . Я решил это, добавив Зависимость maven com.h2database в соответствии с предложением user672009. Спасибо, парни!

1
user3796391

Поскольку это одна из первых тем, возвращаемых в Google для этой ошибки, я опубликую то, что я сделал, если кто-то столкнется с той же проблемой .. Я не хотел исключать DataSourceAutoConfiguration и не использовать базу данных памяти .. 

В моем случае я устанавливал параметры, как сказали другие респонденты, но файл application.properties находился не в той папке.

Поэтому, если ничего подобного не работает, проверьте, находится ли файл внутри src/main/resources! В моем случае это было внутри src/main/resources/static

1
Felipe S.

Если вам действительно требуется «spring-boot-starter-data-jpa» в качестве зависимости вашего проекта и в то же время вы не хотите, чтобы ваше приложение получало доступ к какой-либо базе данных, вы можете просто исключить классы автоконфигурации

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

Используйте эту зависимость ниже.

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

Делать ниже работает. 

@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})

Но если бы я хотел иметь источник данных, я не должен делать вышеуказанную конфигурацию. Ссылка ниже говорит о том, что нам нужны все свойства в файле application.properties. Все свойства должны начинаться с spring.datasource.*

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

1
Anil

Ответ очень прост, SpringBoot будет искать драйвер базы данных Embeddable. Если вы не сконфигурировали ни одну из ваших конфигураций в виде XML или аннотаций, он выдаст это исключение . Сделайте изменения в вашей аннотации следующим образом .__ ,

@EnableAutoConfiguration(exclude=DataSourceAutoConfiguration.class)
это исключит DataSourceAutoConfiguration . И завершение Perfect Simple Coding будет работать, если вы правильно настроили свой класс .
@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);}}
</ Код>

1
Praveen Kumar K S

Я попробовал все вышеупомянутые вещи, но не смог решить проблему. Я использую SQLite, и мой файл SQLite находился в каталоге ресурсов.

a) Настройка выполнена для IDE

Мне нужно вручную добавить ниже строки в файле .classpath моего проекта.

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

После этого я обновил и очистил проект из MenuBar вверху. как 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
Bagesh Sharma

В моем случае, используя IDEA, после удаления каталогаoutзатем все возвращается в нормальное состояние. Я просто не знаю почему, но это сработало.

1
Leo Lee

если у вас нет базы данных в вашем приложении, просто отключите автоконфигурирование источника данных, добавив аннотацию ниже.

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

Уже достаточно ответов было опубликовано. Тем не менее, я пишу, какую ошибку я сделал и как я ее исправил.

В моем случае я упаковал свой проект как pom вместо jar

pom.xml:

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

Изменился на:

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

Это может помочь кому-то с той же ошибкой.

0
Sangeeth

Щелкните правой кнопкой мыши проект и выберите следующую опцию Maven -> Обновить проект. Это решило мою проблему.

0
greenhorn

Обычно такая ошибка возникает, когда вы используете JPA и забыли добавить соединение с базой данных. Таким образом, вы должны добавить связанные с базой данных зависимости в вашем приложении. 

Хотя вы хотите использовать JPA без подключения какой-либо внешней базы данных, а затем добавить hsqldb в вашу зависимость.

Надеюсь, это поможет!

0
imbond

Вот как я решил эту проблему.

В моем случае: мне пришлось настроить источник данных для MySQL Server, который был внешним сервером. 

Как мы все знаем, Spring boot имеет возможность автоматической настройки DataSource для встроенных баз данных.

Таким образом, я понял, что мне пришлось отключить автоконфигурацию источника данных, чтобы использовать мою пользовательскую конфигурацию.

Как уже упоминалось выше, я отключил автоматическую настройку источника данных Spring Boot в application.properties

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

Я определил все свойства конфигурации hibernate в отдельном файле: Hibernate-mysql.properties

Затем я закодировал свою собственную пользовательскую конфигурацию Hibernate следующим образом, и это решило проблему. 

Мой способ настроить требуемый источник данных на основе свойств в файле настраиваемых свойств и заполнить ваш LocalSessionFactoryBean источником данных и другой конфигурацией гибернации. 

Класс пользовательской конфигурации Hibernate: -
--------------------------------------------- ------------

Пользовательская конфигурация Hibernate

0
Philip Dilip

То же самое с @Anas. Я могу запустить его в Eclipse, но когда я использую «Java -jar ...», запустите его, это даст мне эту ошибку. Затем я обнаружил, что мой путь сборки Java неверен, в нем отсутствует папка «src/main/resources», поэтому приложение не может найти application.properties. Когда я добавил папку «src/main/resources» в путь сборки Java, это сработало.

И вам нужно добавить "@PropertySource ({" application.properties "})" в ваш класс приложения.

Скриншот-1

Скриншот-2

0
谢兆鑫

Удалить C:\Users\admin\.IntelliJIdea2018.1\system\compile-server

0
www314599782

Я бы схожая проблема, и исключая DataSourceAutoConfiguration и HibernateJpaAutoConfiguration, решил эту проблему.

Я добавил эти две строки в мой файл application.properties, и это сработало.

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

Если вы используете Gradle, включите правую банку с драйвером, как показано ниже:

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

Или, если вы используете Maven, тогда делайте это в стиле Maven, это должно решить вашу проблему.

0
RWork

Вы можете скачать derby-10.10.1.1.jar из Maven Repository и поместить его в папку WEB-INF/lib, например, в это приложение/WEB-INF/lib/derby-10.10.1.1.jar Ваш встроенный AnnotationConfigEmbeddedWebApplicationContext подберет драйвер базы данных, и ваш веб-сервер начнет работать без проблем :-)

0
Praveen Kumar K S

Всем, кто придет к этой теме после нескольких часов стука головой о стену. Я решил эту ошибку, изменив

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

в 

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

в моем файле schema.sql в каталоге ресурсов.

0
decapo