Spring Boot - NONE veritabanı türü için katıştırılmış veritabanı sürücüsü sınıfı belirlenemiyor


210

Web uygulamamı çalıştırmaya çalışırken atılan hata:

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

Kavanozların datanucleus-appengineve datanucleuskavanozların doğru kombinasyonuna sahip olduğuma inanıyorum :

2.1: DataNucleus 3.1.x (çekirdek, api-jdo, api-jpa, arttırıcı) gerektirir. SDK 1.6.4+ gerektirir Bu Datanucleus sürümünün artık DataNucleus projesi tarafından desteklenmediğini unutmayın

JPA Uygulama Yapılandırması:

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

Uygulamamda nelerin eksik olabileceğini merak ediyorum? Buradan talimatları uyguladım Google Appengine'de Spring Data JPA kullanma


Ben @EnableAutoConfiguration dışarı yorum yaparsanız ben alıyorum: [INFO] UYARI: metricFilter başarısız oldu: org.springframework.beans.factory.NoSuchBeanDefinitionException: Hayır fasulyesi adı 'metricFilter' tanımlanır
kuarklar

İşte tam kodu: bit.ly/1i53oAq
kuarklar

Yanıtlar:


170

Spring Boot ürününü otomatik olarak yapılandırmak için yeterli bilgi sağlamadınız DataSource. Bunu yapmak için, bazı özellikler eklemeniz gerekir application.propertiesile spring.datasourceönek. Ayarlayabileceğiniz tüm özellikleri görmek için DataSourceProperties'e göz atın .

Uygun URL ve sürücü sınıfı adını girmeniz gerekir:

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

3
emin ben DataNucleus + Google App Engine kullanıyorum burada ne koymak
kuarklar

@xybrek Uygulamanıza application.properties dosyasını ekleyin ve içine datasource özelliklerini ekleyin.
iCrus

1
spring.datasource.url = jdbc: mysql: // localhost / abc # spring.datasource.driverClassName = com.mysql.jdbc.Driver spring.datasource.name = olabsenglishdb spring.datasource.username = xxxx spring.datasource.password spring.datasource.driver-class-name = com.mysql.jdbc.Driver spring.jpa.database = mysql spring.jpa.database-platform =
org.hibernate.dialect.MySQLDialect

1
Aynı şeyi yaptım, kod intellij'de uygulamayı çalıştırdığımda iyi çalışıyor, ancak bir kavanoz oluşturup kullanarak çalıştırdığımda java -jar myJar.jarbana aynı hata veriyor.
Anas

1
Merhaba @AndyWilkinson Bahar önyükleme cassandra kodumla aynı hatayla karşılaşıyorum. Orada Cassandra'ya bağlanmaya çalışıyorum. Cassandra bağlantısında spring.datasource.url = … spring.datasource.driver-class-name = …özellik vermezsiniz . Bu yüzden @EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class})ana sınıfımı ekledim . Ama bunu şimdi ekledikten sonra hata alıyorum Parameter 0 of constructor in org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration required a bean of type 'javax.sql.DataSource' that could not be found.. Lütfen yardım et.
kumarhimanshu449

113

Spring Boot starter'dan gömülü H2 veritabanını kullanmak istiyorsanız pom dosyanıza aşağıdaki bağımlılığı ekleyin.

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

Ancak yorumlarda belirtildiği gibi, katıştırılmış H2 veritabanı verileri bellekte tutar ve kalıcı olarak depolamaz.


2
Spring-boot-starter-jdbc ile aynı sorunu yaşıyordum. Bu öneriyi denedim ve sorunumu düzeltti.
bluecollarcoder

3
Bu gerçek bir çözüm değil. H2, bildiğim kadarıyla verileri kalıcı olarak kaydetmeyecek.
SARose

10
@SARose - Tabii ki alışkanlık! Bu bir "bellekte" veritabanıdır.
user672009

1
@ user672009, yanlış. H2 sadece bir bellek veri tabanı değildir. Bkz. H2database.com/html/features.html . Bununla birlikte, bu probleme zayıf bir çözümdür.
Jason Nichols

5
Birinin uygulamasını oluşturmaya çalışıyorum ve bu "Belirlenemiyor ... veritabanı türü YOK" hatası alıyorum. Diğer çözümleri denedikten sonra bunu deniyorum ve işe yarıyor. Uygulama, özellikler tarafından yapılandırılan iki DB kullanmak için yapılmıştır. Onları yapılandırdım, ancak bu hatayı aldım. H2 bağımlılığını ekledikten sonra artık hata yok. Uygulama, belirttiğim diğer DB'leri kullanıyor, hiçbir şey H2, AFAICT'e gitmiyor. Spring-boot'ın bir yan etkisi veya bu uygulamanın tasarımında bir sorun olabilir, ancak başlamadan önce H2 gerekir. Diğerleri bu sorunu olduğu için, sadece bu uygulama olamaz.
LS

87

Ben de aynı sorunu olur ve DataSourceAutoConfiguration hariç sorunu çözdü.

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

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

3
Teşekkürler! application.propertiesgibi yapılandırmak olabilir gibispring.main.web-environment=false
zhuguowei

1
Ben @EnableAutoConfigurationbir SpringBootApplication sınıfında buldum ve orada da dışlama eklemek zorunda kaldı. TBH, muhtemelen @EnableAutoConfigurationilk etapta orada ihtiyacım yok: /
cs94njw

63

Bu benim için çalıştı (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 {

Her iki sınıfı da hariç tutun.

İle çalışmadı

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

7
Bu, neden 'gizemli bir şekilde' uygulamalarında neden veritabanına erişim gerektirdiğini anlamayan insanlar içindir (örneğin, veritabanı erişimi başka bir uygulama tarafından işlendiğinde ve bu sadece bir 'istemci' olduğunda).
cst1992

31

Ekleyebilirsin

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

application.propertiesdosyasına ekleyin .


2
Bir jdbc veri kaynağına ihtiyacınız yoksa, bu kabul edilen cevap olmalıdır.
Farrukh Najmi

Bu, özellikle birden fazla profiliniz olduğunda ve bunlardan biri bellekte olduğunda kullanışlıdır.
Doe Johnson

Spring.autoconfigure.exclude = org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration, org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration: Benim için, ben iş için de HibernateJpaAutoConfiguration exluse için gerekli
AbdelRahmane

20

Şimdi daha yakından baktığım için, DataSource sorununun kırmızı bir ringa balığı olduğunu düşünüyorum. Boot'un Hazırda Bekletme otomatik yapılandırması tetikleniyor ve bu da DataSource'un gerekli olmasına neden oluyor. Hazırda bekletme, sınıf yolunda çünkü içeri spring-boot-starter-data-jpagiren bir bağımlılık var hibernate-entitymanager.

spring-boot-starter-data-jpaHazırda Bekletme durumunu hariç tutmak için bağımlılığınızı güncelleyin :

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
        </exclusion>
    </exclusions>
</dependency>

1
Hata hala aynı :-(
kuarklar

Hariç tutmayı doğru bir şekilde uyguladığınızdan emin misiniz? mvn bağımlılığı: ağaç kontrol etmenize yardımcı olacaktır. Dışındayken DataSource sorunu benim için gitti (şimdi "Tip demo.core.entity.Resource bilinen bir yönetilen türü değil", ama bu ayrı bir sorun görüyorum)
Andy Wilkinson

Merhaba Andy, gönderdiğim gerçek projeyi test ettiğiniz anlamına mı geliyor? umut verici görünüyor
kuarklar

1
Evet, yayınladığınız proje ile ilgiliydi. Yaptığım tek değişiklik, yukarıda açıklandığı gibi Hazırda Bekletme durumunu hariç tutmaktı.
Andy Wilkinson

Harika, ana dal mı yoksa JPA dalını mı derlediniz?
kuark

14

Gönderen Bahar kılavuzda .

Spring Boot, gömülü H2, HSQL ve Derby veritabanlarını otomatik olarak yapılandırabilir. Herhangi bir bağlantı URL'si sağlamanız gerekmez, yalnızca kullanmak istediğiniz katıştırılmış veritabanına derleme bağımlılığı ekleyin.

Örneğin, tipik POM bağımlılıkları:

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

Benim için spring-boot-starter-data-jpa bağımlılığını terk etmek ve sadece spring-boot-starter-jdbc bağımlılığını kullanmak, h2 (veya hsqldb) bağımlılık olarak dahil edildiğim sürece bir cazibe gibi çalıştı.


9

Bahar önyüklemesi application.properties dosyasındaki datasoure özelliklerini arayacaktır.

Lütfen application.properties veya yml dosyasında tanımlayın

application.properties

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

Kendi yapılandırmanıza ihtiyacınız varsa, kendi profilinizi ayarlayabilir ve fasulye oluştururken veri kaynağı değerlerini kullanabilirsiniz.



5

Spring Data'yı kullanarak Elastik Arama için API'ler yaparken bu istisnayla karşılaştım. Aşağıdakileri yaptım ve işe yaradı.

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

3

Org.springframework.data groupId ile iki bağımlılığım vardı, sonra jpa'yı kaldırdım ve sadece mongodb'u sakladım ve işe yaradı!

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

2

Ben sadece @AutoConfigureTestDatabase ekleyerek sorunumu çözmek (replace = Replace.NONE)

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

}

2

o.s.b.d.LoggingFailureAnalysisReporter"BAŞVURU BAŞLATILAMIYOR" mesajı ile birlikte başlıktaki hata mesajını aldım . -Dspring.profiles.active=devEclipse hata ayıklama yapılandırmamı eklemediğim ortaya çıktı, bu yüzden aktif bir profilim yoktu.


1
Benim sorunum da. Hata ayıklama yapılandırmasının VM bağımsız değişkenlerine bayrak ekleme ( Run -> Debug configurations... -> Maven build -> [build name] -> JRE -> VM arguments)
sshow

2

Ben de aynı sorunla karşılaştım.

Cannot determine embedded database driver class for database type NONE.

Benim durumumda jar dosyasını veritabanına karşılık gelen depodan silmek sorunu çözer. Depoda soruna neden olan bozuk bir kavanoz vardı.


1

Benim durumumda, pom'ımda bir hazırda bekletme bağımlılığını tetikleyen ve Spring Boot'un hazırda bekletme kalıcılığını otomatik olarak yapılandırmak için bir veri kaynağı aramasına neden olan org.jasig.cas için maven bağımlılığı koydum. Ben user672009 tarafından önerilen com.h2database maven bağımlılığı ekleyerek çözdü. Teşekkürler beyler!


1

Bu, bu hata için Google'da döndürülen ilk konulardan biri olduğu için, birisinin aynı sorunla karşılaşması durumunda ne yaptığımı göndereceğim DataSourceAutoConfiguration.

Benim durumumda diğer repliers söylediği gibi parametreleri ayarlıyordu ama application.propertiesdosya yanlış klasörün içindeydi .. lol

Yani böyle bir şey işe yaramazsa, dosyanın içinde olup olmadığını kontrol edin src/main/resources! Benim durumumda içerdeydisrc/main/resources/static


1

Yanıt çok basittir, SpringBoot Embeddable veritabanı sürücüsünü arayacaktır, Yapılandırmanızdan herhangi birini XML veya Ek Açıklamalar şeklinde yapılandırmadıysanız, bu istisnayı atar. Ek açıklamanızda bu şekilde değişiklik yapın

@EnableAutoConfiguration(exclude=DataSourceAutoConfiguration.class)
bu DataSourceAutoConfiguration'ı hariç tutacaktır. Ve eğer sınıfınızı doğru şekilde yapılandırdıysanız Mükemmel Basit Kodlama tamamlanmış olur.

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



1

Proje bağımlılığınız olarak gerçekten "spring-boot-starter-data-jpa" ya ihtiyacınız varsa ve aynı zamanda uygulamanızın herhangi bir veritabanına erişmesine izin vermek istemiyorsanız, otomatik yapılandırma sınıflarını hariç tutabilirsiniz

@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)

1

Yukarıda bahsedilen tüm şeyleri denedim ama sorunu çözemedim. SQLite kullanıyorum ve SQLite dosyam kaynaklar dizinindeydi.

a) IDE için kurulum yapıldı

El ile benim projenin .classpath dosyasında aşağıdaki satırları eklemek gerekir.

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

Bundan sonra, üstteki MenuBar'dan projeyi yeniledim ve temizledim. Project-> Clean-> Projemin Adı gibi.

Bundan sonra projeyi çalıştırdım ve sorun çözüldü.

Projem için 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 dağıtımı aynı hata verirse kurulum yapılır

Pom.xml'nize aşağıdaki satırları eklemeniz gerekir

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

Belki birine yardım edebilir.


1

uygulamanızda herhangi bir veritabanı yoksa, aşağıdaki ek açıklama ekleyerek veri kaynağının otomatik yapılandırmasını devre dışı bırakmanız yeterlidir.

@SpringBootApplication(exclude={DataSourceAutoConfiguration.class})

1

@Anas için de aynı şey geçerli. Eclipse çalıştırabilirsiniz, ama "java -jar ..." çalıştırdığınızda, bana bu hatayı veriyor. Sonra benim Java derleme yolu yanlış, "src / main / resources" klasörünü eksik buluyorum, bu yüzden uygulama application.properties bulamıyor. Java derleme yoluna “src / main / resources” klasörünü eklediğimde işe yaradı.

Ayrıca, Uygulama sınıfınıza "@PropertySource ({" application.properties "})" eklemeniz gerekir.

Ekran-1

Ekran-2


Teşekkürler! Dört saattir deniyorum
Santiago Martí Olbrich

1

Bu sorunu bu şekilde çözdüm.

Benim durumumda: Harici bir sunucu olan MySQL Server için veri kaynağını yapılandırmak zorunda kaldım.

Hepimizin bildiği gibi, Spring önyükleme katıştırılmış veritabanları için DataSource'u otomatik olarak yapılandırma özelliğine sahiptir.

Böylece, özel yapılandırmamı kullanmak için veri kaynağı otomatik yapılandırmasını devre dışı bırakmam gerektiğini fark ettim.

Yukarıda birçok kişi tarafından belirtildiği gibi, application.properties'de Spring Boot'un Otomatik Veri Kaynağı yapılandırmasını devre dışı bıraktım.

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

Tüm hazırda bekletme yapılandırması özelliklerini ayrı bir dosyada tanımladım: hibernate-mysql.properties

Ardından, kendi Özel Hazırda Bekletme Yapılandırmamı aşağıdaki şekilde kodladım ve sorunu çözdüm.

Özel bir özellik dosyasındaki özelliklere göre istenen DataSource'u yapılandırma ve LocalSessionFactoryBean'ınızı veri kaynağınızla ve diğer hazırda bekletme yapılandırmanızla doldurma yöntemim.

Hazırda Bekletme Özel Yapılandırma Sınıfı: -
-------------------------------------------- -------------

Hazırda Bekletme Özel Yapılandırması


1

Aşağıdaki bağımlılığı kullanın.

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

Bir veritabanına ihtiyacım yoktu ve bu hatayı alıyordum. Bunu ekledim ve düzeltti.
markthegrea

1

Benim durumumda, IDEA kullanarak, outdirecory kaldırdıktan sonra, her şey normale döner. Sadece nedenini bilmiyorum, ama işe yaradı.


1

Ben benzer bir sorun olur ve DataSourceAutoConfiguration ve HibernateJpaAutoConfiguration hariç sorunu çözdü.

Bu iki satırı application.properties dosyama ekledim ve işe yaradı.

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

1

Zaten yeterince cevap gönderildi. Ancak yaptığım hatayı ve bunu nasıl düzelttim.

Benim durumumda, projemi pomyerinejar

pom.xml:

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

Değiştirildi:

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

Aynı hataya sahip biri için yararlı olabilir.


0

Derby-10.10.1.1.jar dosyasını Maven Deposundan indirebilir ve WEB-INF / lib klasörünüze yerleştirebilirsiniz, örneğin bu Application / WEB-INF / lib / derby-10.10.1.1.jar. Katıştırılmış AnnotationConfigEmbeddedWebApplicationContext öğeniz veritabanı sürücüsünü toplar ve web sunucunuz sorunsuz bir şekilde çalışmaya başlar :-)


0

Gradle kullanıyorsanız, aşağıdaki gibi sağdaki sürücüyü ekleyin:

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

Ya da Maven kullanıyorsanız Maven tarzında yapın, sorununuzu çözmelidir.


0

Başını duvara vurduktan sonra bu ipliğe gelen herkese. Bu hatayı değiştirerek çözdüm

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

için

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

Kaynaklar dizinindeki schema.sql dosyamda.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.