स्प्रिंग बूट - डेटाबेस प्रकार NONE के लिए एम्बेडेड डेटाबेस ड्राइवर वर्ग निर्धारित नहीं कर सकता


210

यह त्रुटि है जो मेरे वेब ऐप को चलाने की कोशिश करते समय डाली गई है:

[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जार का सही संयोजन है :

2.1: डेटान्यूक्लियस 3.1.x (कोर, एपी-जोडो, एपीआई-जेपीए, एनहांसर) की आवश्यकता होती है। SDK 1.6.4+ नोट की आवश्यकता है कि डेटान्यूक्लियस की यह रिलीज़ अब DataNucleus परियोजना द्वारा समर्थित नहीं है

JPA ऐप कॉन्फ़िगरेशन:

@Configuration
@EnableJpaRepositories("demo.core.entity")
@EnableTransactionManagement
class JpaApplicationConfig {
    private static final Logger logger = Logger
            .getLogger(JpaApplicationConfig.class.getName());
    @Bean
    public AbstractEntityManagerFactoryBean entityManagerFactory() {
        logger.info("Loading Entity Manager...");
        LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
        factory.setPersistenceUnitName("transactions-optional");
        return factory;
    }
    @Bean
    public PlatformTransactionManager transactionManager() {
        logger.info("Loading Transaction Manager...");
        JpaTransactionManager txManager = new JpaTransactionManager();
        txManager.setEntityManagerFactory(entityManagerFactory().getObject());
        return txManager;
    }
    @Bean
    public PersistenceExceptionTranslator persistenceExceptionTranslator() {
        return new OpenJpaDialect();
    }
}

Application.java

@Configuration
@ComponentScan
@EnableAutoConfiguration
@RestController
public class Application {

    private static final EntityManagerFactory INSTANCE =
            Persistence.createEntityManagerFactory("transactions-optional");

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

    @RequestMapping("/")
    public String home() {
        return "Hello World";
    }

}

पोम:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="...">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.demohq</groupId>
    <artifactId>demo-boot</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>

    <name>demo-boot</name>
    <description>Demo project</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.1.0.BUILD-SNAPSHOT</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-legacy</artifactId>
            <version>1.1.0.BUILD-SNAPSHOT</version>
        </dependency>
        <!--<dependency>-->
            <!--<groupId>net.kindleit</groupId>-->
            <!--<artifactId>gae-runtime</artifactId>-->
            <!--<version>${gae.version}</version>-->
            <!--<type>pom</type>-->
            <!--<scope>provided</scope>-->
        <!--</dependency>-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aspects</artifactId>
        </dependency>
        <!--<dependency>-->
            <!--<groupId>org.hsqldb</groupId>-->
            <!--<artifactId>hsqldb</artifactId>-->
            <!--<scope>runtime</scope>-->
        <!--</dependency>-->
        <dependency>
            <groupId>com.google.appengine</groupId>
            <artifactId>appengine-api-labs</artifactId>
            <version>${gae.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.google.appengine</groupId>
            <artifactId>appengine-api-stubs</artifactId>
            <version>${gae.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.google.appengine</groupId>
            <artifactId>appengine-testing</artifactId>
            <version>${gae.version}</version>
            <scope>test</scope>
        </dependency>
        <!-- DataNucleus -->
        <dependency>
            <groupId>org.datanucleus</groupId>
            <artifactId>datanucleus-api-jpa</artifactId>
            <version>${datanucleus.jpa.version}</version>
        </dependency>
        <dependency>
            <groupId>org.datanucleus</groupId>
            <artifactId>datanucleus-core</artifactId>
            <version>${datanucleus.jpa.version}</version>
        </dependency>
        <dependency>
            <groupId>org.datanucleus</groupId>
            <artifactId>datanucleus-enhancer</artifactId>
            <version>${datanucleus.jpa.version}</version>
        </dependency>
        <dependency>
            <groupId>com.google.appengine.orm</groupId>
            <artifactId>datanucleus-appengine</artifactId>
            <version>${datanucleus.version}</version>
            <!-- Need to exclude the enhancer since it interfere with the enhancer plugin. -->
            <exclusions>
                <exclusion>
                    <groupId>org.datanucleus</groupId>
                    <artifactId>datanucleus-enhancer</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>javax.jdo</groupId>
            <artifactId>jdo-api</artifactId>
            <version>3.0.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-jpa_2.0_spec</artifactId>
            <version>1.1</version>
        </dependency>

        <!-- OpenJPA -->
        <dependency>
            <groupId>org.apache.openjpa</groupId>
            <artifactId>openjpa-persistence</artifactId>
            <version>2.3.0</version>
        </dependency>


    </dependencies>

    <properties>
        <start-class>demo.Application</start-class>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.7</java.version>
        <m2eclipse.wtp.contextRoot>/</m2eclipse.wtp.contextRoot>
        <datanucleus.jpa.version>3.1.1</datanucleus.jpa.version>
        <datanucleus.version>2.1.2</datanucleus.version>
        <gae.version>1.8.8</gae.version>
        <gae.home>${settings.localRepository}/com/google/appengine/appengine-java-sdk/${gae.version}/appengine-java-sdk/appengine-java-sdk-${gae.version}</gae.home>
        <gae.application.version>test</gae.application.version>
        <!--<org.springframework-version>4.0.5.RELEASE</org.springframework-version>-->
    </properties>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <!--
            <plugin>
                <groupId>net.kindleit</groupId>
                <artifactId>maven-gae-plugin</artifactId>
                <version>0.9.6</version>
                <dependencies>
                    <dependency>
                        <groupId>net.kindleit</groupId>
                        <artifactId>gae-runtime</artifactId>
                        <version>${gae.version}</version>
                        <type>pom</type>
                    </dependency>
                </dependencies>
            </plugin>
            -->
            <plugin>
                <groupId>com.google.appengine</groupId>
                <artifactId>appengine-maven-plugin</artifactId>
                <version>${gae.version}</version>
                <configuration>
                    <enableJarClasses>false</enableJarClasses>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-release-plugin</artifactId>
                <configuration>
                    <goals>gae:deploy</goals>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat6-maven-plugin</artifactId>
                <version>2.0</version>
                <configuration>
                    <path>/</path>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.datanucleus</groupId>
                <artifactId>maven-datanucleus-plugin</artifactId>
                <version>${datanucleus.jpa.version}</version>
                <configuration>
                    <api>JPA</api>
                    <!--<mappingIncludes>**/entity/*.class</mappingIncludes>-->
                    <verbose>true</verbose>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>org.datanucleus</groupId>
                        <artifactId>datanucleus-core</artifactId>
                        <version>${datanucleus.jpa.version}</version>
                    </dependency>
                </dependencies>
                <executions>
                    <execution>
                        <phase>compile</phase>
                        <goals>
                            <goal>enhance</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    <profiles>
        <!-- We can configure our integration server to activate this profile and 
            perform gae:deploy, thus uploading latest snapshot to the http://1.latest.<applicationName>.appspot.com 
            automatically -->
        <profile>
            <id>integration-build</id>
            <properties>
                <gae.application.version>stage</gae.application.version>
            </properties>
        </profile>

        <!-- This profile will activate automatically during release and upload 
            application to the http://2.latest.<applicationName>.appspot.com (We might 
            want to set the 2nd version as our applications Default version to be accessible 
            at http://<applicationName>.appspot.com) -->
        <profile>
            <id>release-build</id>
            <activation>
                <property>
                    <name>performRelease</name>
                    <value>true</value>
                </property>
            </activation>

            <properties>
                <!-- During release, set application version in appengine-web.xml to 
                    2 -->
                <gae.application.version>release</gae.application.version>
            </properties>
        </profile>
    </profiles>

    <repositories>
        <repository>
            <id>spring-snapshots</id>
            <name>Spring Snapshots</name>
            <url>http://repo.spring.io/snapshot</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>http://repo.spring.io/milestone</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>spring-snapshots</id>
            <name>Spring Snapshots</name>
            <url>http://repo.spring.io/snapshot</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </pluginRepository>
        <pluginRepository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>http://repo.spring.io/milestone</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </pluginRepository>
    </pluginRepositories>

</project>

मुझे आश्चर्य है कि मेरे ऐप में क्या गायब हो सकता है? मैंने Google Appengine पर स्प्रिंग डेटा JPA का उपयोग करते हुए यहां से निर्देश का पालन किया


अगर मैं @EnableAutoConfiguration बाहर टिप्पणी मैं: [जानकारी] चेतावनी: विफल रही है metricFilter: org.springframework.beans.factory.NoSuchBeanDefinitionException: नहीं सेम नाम 'metricFilter' परिभाषित किया गया है
क्वार्क

यहाँ पूरा कोड है: bit.ly/1i53oAq
क्वार्क

जवाबों:


170

आपने ऑटो-कॉन्फ़िगर करने के लिए पर्याप्त जानकारी के साथ स्प्रिंग बूट प्रदान नहीं किया है DataSource। ऐसा करने के लिए, आपको उपसर्ग के application.propertiesसाथ कुछ गुण जोड़ने होंगे spring.datasource। उन सभी गुणों को देखने के लिए DataSourceProperties पर नज़र डालें जिन्हें आप सेट कर सकते हैं।

आपको उपयुक्त url और ड्राइवर वर्ग नाम प्रदान करना होगा:

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

3
यकीन नहीं है कि मैं यहाँ क्या डाल रहा हूँ मैं DataNucleus + Google App Engine का उपयोग कर रहा हूँ
क्वार्क

@xybrek बस अपने आवेदन में application.properties फ़ाइल जोड़ें और इसमें डेटा स्रोत गुण जोड़ें।
१५'१५ को १०:१५

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

1
मैंने वही किया, जब मैं इंटेलीज में एप्लिकेशन चलाता हूं, तो कोड ठीक काम कर रहा है, लेकिन जब मैं एक जार बनाता हूं और इसे चलाता java -jar myJar.jarहूं तो यह मुझे एक ही त्रुटि दे रहा है।
अनस

1
हाय @AndyWilkinson मैं अपने स्प्रिंग बूट कैसेंड्रा कोड के साथ एक ही त्रुटि का सामना कर रहा हूं। वहां मैं कैसेंड्रा से जुड़ने की कोशिश कर रहा हूं। और कैसेंड्रा कनेक्टिविटी में आप spring.datasource.url = … spring.datasource.driver-class-name = …गुण नहीं देते हैं। इसलिए मैंने @EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class})अपने मुख्य वर्ग में जोड़ा । लेकिन इसे लगाने के बाद अब मुझे त्रुटि हो रही है Parameter 0 of constructor in org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration required a bean of type 'javax.sql.DataSource' that could not be found.। कृपया मदद कीजिए।
कुमारहिमांशु

113

यदि आप स्प्रिंग बूट स्टार्टर से एम्बेडेड H2 डेटाबेस का उपयोग करना चाहते हैं, तो अपनी पोम फ़ाइल के नीचे निर्भरता जोड़ें।

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

लेकिन जैसा कि टिप्पणियों में उल्लेख किया गया है, एम्बेडेड H2 डेटाबेस स्मृति में डेटा रखता है और इसे स्थायी रूप से संग्रहीत नहीं करता है।


2
मुझे स्प्रिंग-बूट-स्टार्टर-जेडडीबीसी के साथ भी यही समस्या थी। इस सुझाव की कोशिश की और इसने मेरी समस्या को ठीक कर दिया।
bluecollarcoder

3
यह वास्तविक समाधान नहीं है। H2 स्थायी रूप से जहाँ तक मुझे पता है, डेटा को स्थायी रूप से नहीं बचाएगा।
SARose

10
@ - बेशक यह अभ्यस्त! यह एक "मेमोरी" डेटाबेस में है।
user672009

1
@ user672009, गलत। H2 केवल स्मृति डेटाबेस में नहीं है। H2database.com/html/features.html देखें । इसके साथ ही कहा, यह समस्या का एक खराब समाधान है।
जेसन निकोल्स

5
मैं किसी का ऐप बनाने की कोशिश कर रहा हूं और मुझे यह "डेटाबेस प्रकार NONE" त्रुटि के लिए निर्धारित नहीं किया जा सकता है। अन्य समाधानों की कोशिश करने के बाद, मैं यह कोशिश करता हूं और यह काम करता है। एप्लिकेशन को दो डीबी का उपयोग करने के लिए बनाया गया था, गुणों द्वारा कॉन्फ़िगर किया गया था। मैंने उन्हें कॉन्फ़िगर किया, लेकिन यह त्रुटि मिली। मैं H2 निर्भरता जोड़ने के बाद, कोई और त्रुटि नहीं। ऐप मेरे द्वारा निर्दिष्ट अन्य DBs का उपयोग करता है, कभी भी H2, AFAICT में नहीं जाता है। हो सकता है कि स्प्रिंग-बूट का साइड-इफ़ेक्ट हो या इस ऐप के डिज़ाइन में कोई समस्या हो, लेकिन इसके शुरू होने से पहले इसे H2 की आवश्यकता होती है। चूंकि अन्य लोगों को यह समस्या है, इसलिए यह सिर्फ यह ऐप नहीं हो सकता है।
एलएस

87

मैं एक ही समस्या है और DataSourceAutoConfiguration को छोड़कर समस्या हल हो गई।

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

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

3
धन्यवाद! इसे कॉन्फ़िगर कर सकते हैं application.properties, जैसेspring.main.web-environment=false
ज़ुआगौवेई

1
मुझे @EnableAutoConfigurationएक गैर-स्प्रिंगबूटप्लेक्शन क्लास में मिला , और मुझे वहाँ भी बाहर करना पड़ा। TBH, मुझे शायद @EnableAutoConfigurationपहली जगह में वहाँ की आवश्यकता नहीं है: /
cs94njw

63

यह मेरे लिए काम किया (1.3.0.M5):

import org.springframework.boot.autoconfigure.jdbc.*;
import org.springframework.boot.autoconfigure.orm.jpa.*;

@Configuration
@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class})
public class Application {

दोनों वर्गों को छोड़ दें।

यह साथ काम नहीं किया

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

7
यह उन लोगों के लिए है जो यह नहीं समझते हैं कि क्यों उन्हें 'रहस्यमय तरीके से' अपने आवेदन में डेटाबेस एक्सेस की आवश्यकता होती है, जब उन्हें ऐसा नहीं करना चाहिए (जैसे जब डेटाबेस एक्सेस को किसी अन्य एप्लिकेशन द्वारा नियंत्रित किया जा रहा हो और यह सिर्फ एक 'क्लाइंट' हो)।
cst1992

31

आप जोड़ सकते हो

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

आपकी application.propertiesफ़ाइल पर।


2
यदि आपको jdbc डेटा स्रोत की आवश्यकता नहीं है तो यह स्वीकृत उत्तर होना चाहिए।
फारुख नजमी

यह विशेष रूप से तब उपयोगी होता है जब आपके पास कई प्रोफाइल हों और उनमें से एक मेमोरी में हो।
डो जॉनसन

Spring.autoconfigure.exclude = org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration, org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration: मेरे लिए, मैं काम करने के लिए भी HibernateJpaAutoConfiguration exluse करने की जरूरत
AbdelRahmane

20

अब जब मैं करीब देखता हूं, मुझे लगता है कि डेटा स्रोत समस्या एक रेड-हेरिंग है। बूट के हाइबरनेट ऑटो-कॉन्फ़िगरेशन को ट्रिगर किया जा रहा है और यही कारण है कि एक DataSource आवश्यक है। क्लासपैथ पर हाइबरनेट करें क्योंकि आपको एक निर्भरता मिली है spring-boot-starter-data-jpaजिस पर में खींचता है hibernate-entitymanager

spring-boot-starter-data-jpaहाइबरनेट को बाहर करने के लिए अपनी निर्भरता को अपडेट करें :

<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
त्रुटि अभी भी वही :-(
क्वार्क

क्या आप सुनिश्चित हैं कि आपने बहिष्करण को ठीक से लागू किया है? mvan निर्भरता: पेड़ आपको जाँचने में मदद करेगा। जगह में बहिष्करण के साथ डेटा स्रोत समस्या मेरे लिए चली गई है (मैं अब "प्रकार Demo.core.entity.Resource एक ज्ञात प्रबंधित प्रकार नहीं हूं", लेकिन यह एक अलग मुद्दा है)
एंडी विल्किंसन

हाय एंडी इसका मतलब है कि आपने मेरे द्वारा पोस्ट की गई वास्तविक परियोजना का परीक्षण किया है? लगता है वादा किया
क्वार्क

1
हां, यह आपके द्वारा पोस्ट किए गए प्रोजेक्ट के साथ था। ऊपर बताए अनुसार हाइबरनेट बहिष्करण को जोड़ने के लिए मैंने जो एकमात्र परिवर्तन किया था।
एंडी विल्किंसन

कूल, ऐसा लगता है कि आपने जो संकलित किया था वह मास्टर शाखा, या जेपीए शाखा था?
क्वार्क

14

से वसंत मैनुअल

स्प्रिंग बूट एम्बेडेड H2, HSQL और डर्बी डेटाबेस को ऑटो-कॉन्फ़िगर कर सकता है। आपको कोई कनेक्शन URL प्रदान करने की आवश्यकता नहीं है, बस उस अंतर्निहित डेटाबेस के लिए एक निर्भरता शामिल करें जिसे आप उपयोग करना चाहते हैं।

उदाहरण के लिए, विशिष्ट पीओएम निर्भरताएँ होंगी:

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

मेरे लिए स्प्रिंग-बूट-स्टार्टर-डेटा-जेपा निर्भरता को छोड़ना और बस स्प्रिंग-बूट-स्टार्टर-जेडडीबीसी निर्भरता का उपयोग करना एक आकर्षण की तरह काम करता था, जब तक कि मेरे पास एच 2 (या एचएसडीएलडीबी) निर्भरता शामिल थी।


9

स्प्रिंग बूट 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

यदि आपको अपने स्वयं के कॉन्फ़िगरेशन की आवश्यकता है तो आप अपना स्वयं का प्रोफ़ाइल सेट कर सकते हैं और बीन क्रिएशन के दौरान डेटा स्रोत का उपयोग कर सकते हैं।


7

मुझे नहीं लगता कि जवाब देने में बहुत देर हो गई। मैं DataSourceAutoConfiguration को स्प्रिंग बूट से बाहर करके इस समस्या को हल कर सकता हूं।


3
: Exluding पर प्रलेखन यहां पाया docs.spring.io/spring-boot/docs/current/reference/html/...
छीना हुआ

मेरे लिए बहुत देर नहीं हुई। यह मेरी परियोजना के लिए समस्या का सबसे आसान तरीका था।
जेफ फ्रेंच

5

मुझे इस अपवाद का सामना करना पड़ा जब मैं स्प्रिंग डेटा का उपयोग करके इलास्टिक खोज के लिए एपीआई कर रहा था। मैंने निम्नलिखित कार्य किया और यह काम किया।

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

3

मुझे org.springframework.data के GroupId के साथ दो निर्भरताएं थीं, फिर मैंने jpa को हटा दिया और केवल mongodb रखा, और यह काम किया!

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

2

मैं सिर्फ @AutoConfigureTestDatabase (बदलें = Replace.NONE) जोड़कर अपनी समस्या हल करता हूं

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

}

2

मुझे o.s.b.d.LoggingFailureAnalysisReporter"APPLICATION FAILED TO START" संदेश के साथ शीर्षक में त्रुटि संदेश मिला । यह पता चला कि मैंने -Dspring.profiles.active=devअपने ग्रहण डिबग कॉन्फ़िगरेशन में नहीं जोड़ा था, इसलिए मेरा कोई सक्रिय प्रोफ़ाइल नहीं था।


1
बिल्कुल मेरी समस्या के रूप में अच्छी तरह से। डिबग कॉन्फ़िगरेशन के VM तर्कों में ध्वज को जोड़ना ( Run -> Debug configurations... -> Maven build -> [build name] -> JRE -> VM arguments)
sshow

2

मैंने भी उसी मुद्दे का सामना किया।

Cannot determine embedded database driver class for database type NONE.

मेरे मामले में डेटाबेस से संबंधित रिपॉजिटरी से जार फ़ाइल को हटाने से समस्या ठीक हो जाती है। रिपोजिटरी में दूषित जार मौजूद था जो इस मुद्दे का कारण बन रहा था।


1

मेरे मामले में, मैंने इसे अपने पोम में org.jasig.cas के लिए एक मावेन निर्भरता के लिए रखा था जो एक हाइबरनेट निर्भरता को ट्रिगर करता था और जिसके कारण स्प्रिंग बूट को हाइबरनेट दृढ़ता से ऑटो-कॉन्फ़िगर करने के लिए डेटा स्रोत की तलाश में था। मैंने इसे com.h2database maven निर्भरता को जोड़कर हल किया है जैसा कि user672009 द्वारा सुझाया गया है। धन्यवाद दोस्तों!


1

चूंकि यह इस त्रुटि के लिए Google में लौटाए गए पहले विषयों में से एक है, इसलिए मैं वही करूंगा जो किसी ने उसी मुद्दे का सामना करने के मामले में किया था .. मैं बाहर नहीं करना चाहता था DataSourceAutoConfiguration एक मेमोरी डेटाबेस का उपयोग ।

मेरे मामले में मैं पैरामीटर सेट कर रहा था क्योंकि अन्य उत्तरदाताओं ने कहा था लेकिन ए application.properties फ़ाइल गलत फ़ोल्डर के अंदर थी .. योग्य

इस मामले में ऐसा कुछ भी नहीं है, तो जांच लें कि क्या फ़ाइल अंदर है src/main/resources! मेरे मामले में यह अंदर थाsrc/main/resources/static


1

उत्तर बहुत सरल है, स्प्रिंगबूट एंबेडेबल डेटाबेस ड्राइवर की तलाश करेगा, यदि आपने XML या एनोटेशन के रूप में अपने किसी भी कॉन्फ़िगरेशन में कॉन्फ़िगर नहीं किया है, तो यह इस अपवाद को फेंक देगा। इस तरह से अपने एनोटेशन में बदलाव करें

@EnableAutoConfiguration(exclude=DataSourceAutoConfiguration.class)
यह DataSourceAutoConfiguration को बाहर कर देगा। और अगर आप अपनी कक्षा को ठीक से कॉन्फ़िगर कर चुके हैं तो परफेक्ट सिंपल कोडिंग पूर्ण होने पर काम होगा।

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


1

नीचे काम करता है।

@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})

लेकिन अगर मैं डेटा स्रोत रखना चाहता था, तो मुझे उपरोक्त कॉन्फ़िगरेशन नहीं करना चाहिए। नीचे दिए गए लिंक में कहा गया है कि हमें application.properties फ़ाइल में सभी गुणों की आवश्यकता है। सभी गुणों के साथ शुरू होना चाहिए spring.datasource.*

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


1

यदि आपको अपनी परियोजना निर्भरता के रूप में वास्तव में "स्प्रिंग-बूट-स्टार्टर-डेटा-जपा" की आवश्यकता है और साथ ही आप अपने ऐप को किसी भी डेटाबेस तक पहुंचने की अनुमति नहीं देना चाहते हैं, तो आप बस ऑटो-कॉन्फ़िगरेशन कक्षाओं को बाहर कर सकते हैं

@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)

1

मैंने ऊपर उल्लेखित सभी चीजों की कोशिश की, लेकिन मुद्दे को हल नहीं कर सका। मैं SQLite का उपयोग कर रहा हूं और मेरी SQLite फ़ाइल संसाधन निर्देशिका में थी।

a) IDE के लिए किया गया सेट अप

मुझे अपने प्रोजेक्ट की .classpath फ़ाइल में मैन्युअल रूप से नीचे की पंक्तियों को जोड़ने की आवश्यकता है।

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

उसके बाद, मैंने सबसे ऊपर MenuBar से प्रोजेक्ट को रिफ्रेश और क्लीन किया। जैसे प्रोजेक्ट-> क्लीन-> माय प्रोजेक्ट नेम।

उसके बाद, मैं इस परियोजना और समस्या को हल करता हूं।

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

बी) सेट अप अगर जार तैनाती एक ही त्रुटि फेंक दिया

आपको अपने pom.xml में निम्न पंक्तियों को जोड़ना होगा

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

हो सकता है कि यह किसी की मदद करे।


1

यदि आपके पास अपने आवेदन में कोई डेटाबेस नहीं है, तो बस एनोटेशन नीचे जोड़कर डेटा स्रोत के ऑटो-कॉन्फ़िगरेशन को अक्षम करें।

@SpringBootApplication(exclude={DataSourceAutoConfiguration.class})

1

@ आंसुओं को भी यही। मैं इसे ग्रहण में चला सकता हूं, लेकिन जब मैं "जावा -जर ..." का उपयोग करता हूं, तो इसे चलाएं, यह मुझे यह त्रुटि देता है। तब मुझे लगता है कि मेरा जावा बिल्ड पथ गलत है, यह फ़ोल्डर "src / main / resource" को याद कर रहा है, इसलिए, एप्लिकेशन को application.properties नहीं मिल सकता है। जब मैं जावा निर्माण पथ में "src / main / resource" फ़ोल्डर जोड़ता हूं, तो यह काम करता है।

और, आपको अपने एप्लिकेशन वर्ग में "@PropertySource ({" application.properties "})" जोड़ने की आवश्यकता है।

स्क्रीनशॉट -1

स्क्रीनशॉट -2


धन्यवाद! मैं चार घंटे से कोशिश कर रहा हूं
सैंटियागो मार्टी ओल्ब्रिक

1

इस तरह मैंने इस समस्या को हल किया।

मेरे मामले में: मुझे MySQL सर्वर के लिए डेटा स्रोत को कॉन्फ़िगर करना था, जो एक बाहरी सर्वर था।

जैसा कि हम सभी जानते हैं, स्प्रिंग बूट में एम्बेडेड डेटाबेस के लिए डेटा स्रोत को ऑटो-कॉन्फ़िगर करने की क्षमता होती है।

इस प्रकार, मुझे एहसास हुआ कि मुझे अपने कस्टम कॉन्फ़िगरेशन का उपयोग करने के लिए डेटा स्रोत ऑटो-कॉन्फ़िगरेशन को अक्षम करना था।

जैसा कि कई लोगों ने बताया है, मैंने Application.properties पर स्प्रिंग बूट के स्वचालित डेटा स्रोत कॉन्फ़िगरेशन को अक्षम कर दिया है

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

मैंने एक अलग फ़ाइल में सभी हाइबरनेट कॉन्फ़िगरेशन गुणों को परिभाषित किया: हाइबरनेट- mysql.properties

फिर, मैंने निम्नलिखित तरीके से अपने स्वयं के कस्टम हाइबरनेट कॉन्फ़िगरेशन को कोडित किया और इसने समस्या को हल किया।

कस्टम प्रॉपर्टी फ़ाइल में गुणों के आधार पर वांछित डेटा स्रोत को कॉन्फ़िगर करने का मेरा तरीका और अपने डेटा स्रोत और अन्य हाइबरनेट कॉन्फ़िगरेशन के साथ अपने LocalSessionFactoryBean को पॉप्युलेट करें।

हाइबरनेट कस्टम कॉन्फ़िगरेशन क्लास: -
-------------------------------------------- -------------

हाइबरनेट कस्टम कॉन्फ़िगरेशन


1

इस नीचे निर्भरता का उपयोग करें।

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

मुझे डेटाबेस की आवश्यकता नहीं थी और यह त्रुटि हो रही थी। मैंने इसे जोड़ा और इसे ठीक किया।
13

1

मेरे मामले में, आईडीईए का उपयोग करते हुए, outडायरिकरी को हटाने के बाद , फिर सब कुछ सामान्य हो जाता है। मुझे अभी पता नहीं क्यों, लेकिन यह काम कर गया।


1

मैं इसी तरह की समस्या और DataSourceAutoConfiguration और HibernateJpaAutoConfiguration को छोड़कर समस्या का समाधान करूँगा।

मैंने अपने एप्लिकेशन में इन दो पंक्तियों को जोड़ दिया है। फाइल और यह काम किया है।

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

1

पहले से ही पर्याप्त उत्तर पोस्ट किए गए थे। हालांकि, मैं पोस्ट कर रहा हूं कि मैंने क्या गलती की और मैंने इसे कैसे सही किया।

मेरे मामले में, मैंने अपनी परियोजना को pomइसके बजाय पैक किया थाjar

pom.xml:

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

में परिवर्तित किया गया:

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

यह उसी गलती वाले व्यक्ति के लिए मददगार हो सकता है।


0

आप मावेन रिपॉजिटरी से derby-10.10.1.1.jar डाउनलोड कर सकते हैं और इसे अपने WEB-INF / lib फ़ोल्डर में रख सकते हैं, जैसे यह Application / WEB-INF / lib / derby-10.10.1.1.jar। आपका एम्बेडेड एनोटेशनConfigEmbeddedWebApplicationContext डेटाबेस ड्राइवर को पिक कर लेगा और आपका वेबस्वर बिना किसी समस्या के चलने लगेगा :-)


0

यदि आप ग्रेडल का उपयोग कर रहे हैं, तो नीचे दिए गए ड्राइवर के दाहिने जार को शामिल करें:

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

या मावेन का उपयोग करते हैं तो मावेन शैली में करें, यह आपकी समस्या को हल करना चाहिए।


0

किसी दीवार के खिलाफ अपना सिर पीटने के घंटों बाद इस धागे पर आने वाले किसी भी व्यक्ति के लिए। मैंने इस त्रुटि को बदलकर हल किया

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

सेवा

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

संसाधन निर्देशिका में मेरे स्कीमा। एसक्यूएल फ़ाइल में।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.