Spring Boot - 无法确定数据库类型为NONE的嵌入式数据库驱动程序类 [英] Spring Boot - Cannot determine embedded database driver class for database type NONE

查看:922
本文介绍了Spring Boot - 无法确定数据库类型为NONE的嵌入式数据库驱动程序类的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  [INFO]警告:嵌套在org中.springframework.beans.factory.BeanCreationException:创建名为'org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration'的bean时出错:注入自动装配依赖失败;嵌套异常是org.springframework.beans.factory.BeanCreationException:无法自动装入字段:private javax.sql.DataSource org.springframework.boot.autoconfigure.orm.jpa.JpaBaseConfiguration.dataSource;嵌套异常是org.springframework.beans.factory.BeanCreationException:在类路径资源[org / springframework / boot / autoconfigure / jdbc / DataSourceAutoConfiguration $ NonEmbeddedConfiguration.class]中定义名称为'dataSource'的bean时出错:bean的实例化失败;嵌套异常是org.springframework.beans.factory.BeanDefinitionStoreException:工厂方法[public javax.sql.DataSource org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration $ NonEmbeddedConfiguration.dataSource()]引发异常;嵌套异常是org.springframework.beans.factory.BeanCreationException:无法确定数据库类型为NONE的嵌入式数据库驱动程序类。如果您想要嵌入式数据库,请将支持的数据库放在类路径中。:
[INFO] org.springframework.beans.factory.BeanCreationException:无法确定数据库类型为NONE的嵌入式数据库驱动程序类。如果你想要一个嵌入式数据库,请在类路径中放一个支持的数据库。
[信息]在org.springframework.boot.autoconfigure.jdbc.DataSourceProperties.getDriverClassName(DataSourceProperties.java:91)
[信息]在org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration $ NonEmbeddedConfiguration。数据源(DataSourceAutoConfiguration.java:100)
[信息]在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)
[信息]在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)
[ (简单实例策略)。 .java:166)
[INFO] at org.springframework.beans.factory.support.ConstructorResolver $ 3.run(ConstructorRe
[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)
[信息]在org.springframework.beans.factory.support.AbstractBeanFactory $ 1.getObject(AbstractBeanFactory.java:3 04)
[信息]在org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228)
[INFO]在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)
[信息]在org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:960)
[INFO]在org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor $ AutowiredAnnotationBeanPostProcessor.jav(org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:858)
[INFO] a: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)
[信息]在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(DefaultSi
[INFO] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:300)
[INFO] at org.springframework.beans.factory。 support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:195)
[信息]在org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:370)
[INFO]在有机springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1094)
[INFO] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:989)
[INFO]在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:504)
[INFO]在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory。 createBean(AbstractAutowireCapableBeanFactory.java:475)
[信息]在org.springframework.beans.factory.support.AbstractBeanFactory $ 1.getObject(AbstractBeanFactory.java:304)
[INFO]在org.springframework.beans .factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228)
[信息]在org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:300)
[INFO]在org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:195)
[信息]在org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:973)
[INFO]在org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:750)
[信息]在org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:482)
[信息]在org.spr
[INFO] at org.springframework.boot.SpringApplication.run(SpringApplication.java:313)
[INFO] at org.springframework。 boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:142)
[信息]在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.WebAppCo ntext.doStart(WebAppContext.java:467)
[信息]在org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
[信息]在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。启动(AbstractLifeCycle.java:50)
[com.google.appengine.tools.development.JettyContainerService.startContainer(JettyContainerService.java:249)上的[INFO]
[com.google.appengine上的INFO]。 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)
java.security.AccessController.doPrivileged(本地方法)的[INFO]
com.google.appengine.tools.development.DevAppServerImpl.start(DevAppServerImpl.java)的[INFO] :210)
[INFO]位于com.google.appengine.tools.development.DevAppServerMain $ StartAction.apply(DevAppServerMain.java:277)
[INFO]位于com.google.appengine.tools.util .Parser $ ParseResult.applyArgs(Parser.java:48)
[INFO]位于com.google.appengine.tools.development.DevAppServerMain.run(DevAppServerMain.java:219)
[INFO]位于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 App Config:

  @Configuration 
@EnableJpaRepositories(demo.core.entity)
@EnableTransactionManagement
class JpaApplicationConfig {
private static final Logger logger = Logger
.getLogger(JpaApplicationConfig.class.getName());
@Bean
public AbstractEntityManagerFactoryBean entityManagerFactory(){
logger.info(Loading Entity Manager ...);
LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
factory.setPersistenceUnitName(transactions-optional);
退货工厂;

@Bean
Public PlatformTransactionManager transactionManager(){
logger.info(Loading Transaction Manager ...);
JpaTransactionManager txManager = new JpaTransactionManager();
txManager.setEntityManagerFactory(entityManagerFactory()。getObject());
返回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(){
returnHello World;
}

}

POM: strong>

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

< groupId> org.demohq< / groupId>
< artifactId> demo-boot< / artifactId>
< version> 0.0.1-SNAPSHOT< / version>
<包装>战争< / packaging>

< name> demo-boot< / name>
< description>演示项目< / description>

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

<依赖关系>
< dependency>
< groupId> org.springframework.boot< / groupId>
< artifactId> spring-boot-starter-web< / artifactId>
< /依赖关系>
< dependency>
< groupId> org.springframework.boot< / groupId>
< artifactId> spring-boot-starter-actuator< / artifactId>
< /依赖关系>
< dependency>
< groupId> org.springframework.boot< / groupId>
< artifactId> spring-boot-starter-tomcat< / artifactId>
< scope>提供< / scope>
< /依赖关系>
< dependency>
< groupId> org.springframework.boot< / groupId>
< artifactId> spring-boot-legacy< / artifactId>
< version> 1.1.0.BUILD-SNAPSHOT< / version>
< /依赖关系>
<! - <依赖关系> - >
<! - < groupId> net.kindleit< / groupId> - >
<! - < artifactId> gae-runtime< / artifactId> - >
<! - < version> $ {gae.version}< / version> - >
<! - < type> pom< / type> - >
<! - < scope>提供< / scope> - >
<! - < / dependency> - >
< dependency>
< groupId> org.springframework.boot< / groupId>
< artifactId> spring-boot-starter-test< / artifactId>
< scope> test< / scope>
< /依赖关系>
< dependency>
< groupId> org.springframework.boot< / groupId>
< artifactId> spring-boot-starter-data-jpa< / artifactId>
< /依赖关系>
< dependency>
< groupId> org.springframework< / groupId>
< artifactId> spring-aspects< / artifactId>
< /依赖关系>
<! - <依赖关系> - >
<! - < groupId> org.hsqldb< / groupId> - >
<! - < artifactId> hsqldb< / artifactId> - >
<! - < scope>运行时< / scope> - >
<! - < / dependency> - >
< dependency>
< groupId> com.google.appengine< / groupId>
< artifactId> appengine-api-labs< / artifactId>
< version> $ {gae.version}< / version>
< scope> test< / scope>
< /依赖关系>
< dependency>
< groupId> com.google.appengine< / groupId>
< artifactId> appengine-api-stubs< / artifactId>
< version> $ {gae.version}< / version>
< scope> test< / scope>
< /依赖关系>
< dependency>
< groupId> com.google.appengine< / groupId>
< artifactId> appengine-testing< / artifactId>
< version> $ {gae.version}< / version>
< scope> test< / scope>
< /依赖关系>
<! - DataNucleus - >
< dependency>
< groupId> org.datanucleus< / groupId>
< artifactId> datanucleus-api-jpa< / artifactId>
< version> $ {datanucleus.jpa.version}< / version>
< /依赖关系>
< dependency>
< groupId> org.datanucleus< / groupId>
< artifactId> datanucleus-core< / artifactId>
< version> $ {datanucleus.jpa.version}< / version>
< /依赖关系>
< dependency>
< groupId> org.datanucleus< / groupId>
< artifactId> datanucleus-enhancer< / artifactId>
< version> $ {datanucleus.jpa.version}< / version>
< /依赖关系>
< dependency>
< groupId> com.google.appengine.orm< / groupId>
< artifactId> datanucleus-appengine< / artifactId>
< version> $ {datanucleus.version}< / version>
<! - 需要排除增强器,因为它会干扰增强器插件。 - >
<排除项>
<排除>
< groupId> org.datanucleus< / groupId>
< artifactId> datanucleus-enhancer< / artifactId>
< /排除>
< /排除>
< /依赖关系>
< dependency>
< groupId> javax.jdo< / groupId>
< artifactId> jdo-api< / artifactId>
< version> 3.0.1< / version>
< /依赖关系>
< dependency>
< groupId> org.apache.geronimo.specs< / groupId>
< artifactId> geronimo-jpa_2.0_spec< / artifactId>
< version> 1.1< / version>
< /依赖关系>

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


< / dependencies>

<属性>
< 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>
$ {settings.localRepository} / com / google / appengine / appengine-java-sdk / $ {gae.version} / appengine-java-sdk / appengine-java-sdk - $ { gae.version}< /gae.home>
< gae.application.version>测试< /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>
<依赖关系>
< dependency>
< groupId> net.kindleit< / groupId>
< artifactId> gae-runtime< / artifactId>
< version> $ {gae.version}< / version>
< type> pom< / type>
< /依赖关系>
< /依赖关系>
< / plugin>
- >
< plugin>
< groupId> com.google.appengine< / groupId>
< artifactId> appengine-maven-plugin< / artifactId>
< version> $ {gae.version}< / version>
<配置>
< enableJarClasses> false< / enableJarClasses>
< / configuration>
< / plugin>
< plugin>
< artifactId> maven-release-plugin< / artifactId>
<配置>
< goals> gae:deploy< / goals>
< / configuration>
< / plugin>
< plugin>
< groupId> org.apache.tomcat.maven< / groupId>
< artifactId> tomcat6-maven-plugin< / artifactId>
< version> 2.0< / version>
<配置>
<路径> /< /路径>
< / configuration>
< / plugin>
< plugin>
< groupId> org.datanucleus< / groupId>
< artifactId> maven-datanucleus-plugin< / artifactId>
< version> $ {datanucleus.jpa.version}< / version>
<配置>
< api> JPA< / api>
<! - < mappingIncludes> ** / entity / *。class< / mappingIncludes> - >
<详细>真< /详细>
< / configuration>
<依赖关系>
< dependency>
< groupId> org.datanucleus< / groupId>
< artifactId> datanucleus-core< / artifactId>
< version> $ {datanucleus.jpa.version}< / version>
< /依赖关系>
< /依赖关系>
<执行次数>
<执行>
<阶段>编译< /阶段>
<目标>
< goal>增强< / goal>
< /目标>
< /执行>
< /执行次数>
< / plugin>
< / plugins>
< / build>

<个人资料>
<! - 我们可以配置我们的集成服务器以激活此配置文件,
执行gae:deploy,从而将最新快照上传到http://1.latest.< applicationName> .appspot。 com
自动 - >
<个人资料>
< id> integration-build< / id>
<属性>
< gae.application.version>阶段< /gae.application.version>
< / properties>
< / profile>

<! - 此配置文件将在发布期间自动激活并将
应用程序上传到http://2.latest.< applicationName> .appspot.com(我们可能
想将第二个版本设置为我们的应用程序默认版本在http://< applicationName> .appspot.com)可访问
) - >
<个人资料>
< id> release-build< / id>
<激活>
<属性>
< name> performRelease< / name>
<值> true< /值>
< / property>
< / activation>

<属性>
<! - 在发布期间,将appengine-web.xml中的应用程序版本设置为
2 - >
< gae.application.version>发布< /gae.application.version>
< / properties>
< / profile>
< / profiles>

< repositories>
< repository>
< id> spring-snapshots< / id>
<名称> Spring Snapshots< / name>
< url> http://repo.spring.io/snapshot< / url>
<快照>
< enabled> true< / enabled>
< / snapshots>
< / repository>
< repository>
< id> spring-milestones< / id>
<名称> Spring里程碑< / name>
< url> http://repo.spring.io/milestone< / url>
<快照>
<启用> false< / enabled>
< / snapshots>
< / repository>
< / repositories>
< pluginRepositories>
< pluginRepository>
< id> spring-snapshots< / id>
<名称> Spring Snapshots< / name>
< url> http://repo.spring.io/snapshot< / url>
<快照>
< enabled> true< / enabled>
< / snapshots>
< / pluginRepository>
< pluginRepository>
< id> spring-milestones< / id>
<名称> Spring里程碑< / name>
< url> http://repo.spring.io/milestone< / url>
<快照>
<启用> false< / enabled>
< / snapshots>
< / pluginRepository>
< / pluginRepositories>

< / project>

我想知道在我的应用程序中可能会丢失什么?我遵循这里的在Google Appengine上使用Spring Data JPA < 你没有提供足够的信息来自动配置 DataSource 。为此,您需要使用 spring.datasource 前缀将一些属性添加到 application.properties 中。看看 DataSourceProperties 查看您可以设置的所有属性。



您需要提供适当的网址和驱动程序类名称:

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


This is the error that is thrown when trying to run my web app:

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

I believe I have the right combination of datanucleus-appengine and datanucleus jars:

2.1: Requires DataNucleus 3.1.x (core, api-jdo, api-jpa, enhancer). Requires SDK 1.6.4+ Note that this release of Datanucleus is no longer supported by the DataNucleus project

JPA App Config:

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

Application.java

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

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

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

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

}

POM:

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

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

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

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

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

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


    </dependencies>

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

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

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

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

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

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

</project>

I wonder what could be missing in my app? I followed the instruction from here Using Spring Data JPA on Google Appengine

解决方案

You haven't provided Spring Boot with enough information to auto-configure a DataSource. To do so, you'll need to add some properties to application.properties with the spring.datasource prefix. Take a look at DataSourceProperties to see all of the properties that you can set.

You'll need to provide the appropriate url and driver class name:

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

这篇关于Spring Boot - 无法确定数据库类型为NONE的嵌入式数据库驱动程序类的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆