![](/img/trans.png)
[英]Spring Boot: Cannot determine embedded database driver class for database type NONE
[英]Spring Boot - Cannot determine embedded database driver class for database type 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
jar 的正確組合:
2.1:需要 DataNucleus 3.1.x(核心、api-jdo、api-jpa、增強器)。 需要 SDK 1.6.4+ 請注意,DataNucleus 項目不再支持此版本的 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();
}
}
應用程序.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 上使用 Spring Data JPA
您沒有為Spring Boot提供足夠的信息來自動配置DataSource
。 為此,您需要使用spring.datasource
前綴向application.properties
添加一些屬性。 查看DataSourceProperties以查看可以設置的所有屬性。
您需要提供相應的URL和驅動程序類名稱:
spring.datasource.url = …
spring.datasource.driver-class-name = …
如果您想使用Spring Boot的嵌入式H2數據庫,請將以下依賴項添加到您的pom文件中。
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.3.156</version>
</dependency>
但正如評論中所提到的,嵌入式H2數據庫將數據保存在內存中,並且不會永久存儲它。
我有同樣的問題,排除DataSourceAutoConfiguration解決了這個問題。
@SpringBootApplication
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
public class RecommendationEngineWithCassandraApplication {
public static void main(String[] args) {
SpringApplication.run(RecommendationEngineWithCassandraApplication.class, args);
}
}
這對我有用(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})
你可以加
spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
到您的application.properties
文件。
現在我仔細觀察,我認為DataSource問題是一個紅色的鯡魚。 正在觸發Boot的Hibernate自動配置,這就是導致需要DataSource的原因。 Hibernate在classpath上,因為你依賴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>
從Spring手冊 。
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)作為依賴項包含在內。
Spring啟動將在application.properties文件中查找datasoure屬性。
請在application.properties或yml文件中定義它
application.properties
spring.datasource.url=xxx
spring.datasource.username=xxx
spring.datasource.password=xxx
spring.datasource.driver-class-name=xxx
如果您需要自己的配置,可以設置自己的配置文件,並在創建bean時使用數據源值。
如果回答為時已晚,我不會這樣做。 我可以通過從Spring引導中排除DataSourceAutoConfiguration來解決這個問題。
我和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>
我在使用Spring Data為ElasticSearch做API時遇到了這個異常。 我做了以下工作。
@SpringDataApplication(exclude = {DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class})
我只是添加@AutoConfigureTestDatabase(replace = Replace.NONE)來解決我的問題
@RunWith(SpringRunner.class)
@DataJpaTest
@AutoConfigureTestDatabase(replace=Replace.NONE)
public class TestClienteRepository {
}
我從osbdLoggingFailureAnalysisReporter
獲得了標題中的錯誤消息以及“APPLICATION FAILED TO START”消息。 事實證明我沒有將-Dspring.profiles.active=dev
添加到我的Eclipse調試配置中,因此我沒有活動的配置文件。
我也遇到了同樣的問題。
Cannot determine embedded database driver class for database type NONE.
在我的情況下,從數據庫對應的存儲庫中刪除jar文件可以解決問題。 存儲庫中存在損壞的jar,導致問題。
在我的例子中,我在我的pom中為org.jasig.cas設置了一個maven依賴項,它觸發了一個hibernate依賴項,並導致Spring Boot尋找一個數據源來自動配置hibernate持久性。 我通過添加user672009建議的com.h2database maven依賴項來解決它。 多謝你們!
做以下工作。
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
但如果我想擁有dataSource,我不應該進行上述配置。 下面的鏈接說我們需要application.properties文件中的所有屬性。 所有屬性都應該以spring.datasource.*
http://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html
由於這是谷歌為此錯誤返回的第一個主題之一,我將發布我所做的以防有人面臨同樣的問題..我不想排除DataSourceAutoConfiguration
既不使用內存數據庫..
在我的情況下,我正在設置參數,因為其他回復者說,但application.properties
文件在錯誤的文件夾中..大聲笑
所以,如果沒有這樣的工作,請檢查文件是否在src/main/resources
! 在我的情況下,它位於src/main/resources/static
答案非常簡單,SpringBoot將查找Embeddable數據庫驅動程序,如果您沒有以XML或Annotations的形式配置任何配置,它將拋出此異常。 像這樣在注釋中進行更改
@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);
}
}
如果您確實需要“spring-boot-starter-data-jpa”作為項目依賴項,同時您不希望允許您的應用訪問任何數據庫,則可以簡單地排除自動配置類
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
我嘗試了上面提到的所有內容,但無法解決問題。 我正在使用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
b) 如果Jar部署拋出相同的錯誤,則設置完成
您需要在pom.xml中添加以下行
<build>
<resources>
<resource>
<directory>resources</directory>
<targetPath>${project.build.outputDirectory}</targetPath>
<includes>
<include>application.properties</include>
</includes>
</resource>
</resources>
</build>
可能它可以幫助某人。
如果您的應用程序中沒有任何數據庫,只需通過添加下面的注釋來禁用數據源的自動配置。
@SpringBootApplication(exclude={DataSourceAutoConfiguration.class})
這就是我解決這個問題的方法。
就我而言:我必須為MySQL服務器配置數據源,這是一個外部服務器。
眾所周知,Spring引導能夠為嵌入式數據庫自動配置DataSource。
因此,我意識到我必須禁用數據源自動配置才能使用我的自定義配置。
如上所述,我在application.properties中禁用了Spring Boot的自動數據源配置
spring.autoconfigure.exclude = org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
我在一個單獨的文件中定義了所有hibernate配置屬性:hibernate-mysql.properties
然后,我按照以下方式編寫了自己的自定義Hibernate配置,並解決了這個問題。
我的方法是根據自定義屬性文件中的屬性配置所需的DataSource,並使用您的數據源和其他hibernate配置填充LocalSessionFactoryBean。
Hibernate自定義配置類: -
-------------------------------------------------- -------
在我的情況下,使用IDEA,刪除out
direcory后,一切恢復正常。 我只是不知道為什么,但它成功了。
使用下面的依賴項。
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
我有類似的問題,排除 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
已經發布了足夠多的答案。 但是,我正在發布我犯了什么錯誤以及我如何糾正它。
就我而言,我已將項目打包為pom
而不是jar
pom.xml:
...
<packaging>pom</packaging>
...
變成:
...
<packaging>jar</packaging>
...
它可能對有同樣錯誤的人有所幫助。
您可以從Maven資源庫下載derby-10.10.1.1.jar並將其放在WEB-INF / lib文件夾中,例如Application / WEB-INF / lib / derby-10.10.1.1.jar。 您的嵌入式AnnotationConfigEmbeddedWebApplicationContext將拾取數據庫驅動程序,您的網絡服務器將開始運行,沒有任何問題:-)
如果您使用的是Gradle,請輸入正確的jar驅動程序,如下所示:
compile("org.mongodb:mongo-java-driver:3.3.0")
或者如果使用Maven然后以Maven風格進行,它應該可以解決您的問題。
在幾個小時的撞擊牆壁后,任何人都來到這個線程。 我通過改變解決了這個錯誤
create table `group`(
id char(19) primary key
);
至
create table if not exists `group`(
id char(19) primary key
);
在資源目錄中的schema.sql文件中。
右鍵單擊該項目,然后選擇以下選項Maven - > Update Project。 這解決了我的問題。
通常,當您使用JPA並忘記添加數據庫連接時會發生此類錯誤。 因此,您必須在應用程序中添加與數據庫相關的依賴項。
但是,您希望在不連接任何外部數據庫的情況下使用JPA,然后在依賴項中添加hsqldb。
我希望這有幫助!
我的應用程序文件沒有被讀取,Spring 試圖連接到嵌入式 H2 數據庫(未添加到 pom 中)。 這引發了以下錯誤消息:
如果您要從特定配置文件加載數據庫設置,您可能需要激活它(當前沒有配置文件處於活動狀態)。
按照此問題確保正在閱讀您的應用程序文件。
如果都不起作用,請嘗試創建一個 Repository 類以及 RepositoryInterface,盡管 Spring Boot 應該自動生成一個實現類,但這對我有用。
刪除C:\\Users\\admin\\.IntelliJIdea2018.1\\system\\compile-server
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.