これは私のWebアプリを実行しようとしたときにスローされるエラーです:
[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 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>
私のアプリには何が欠けているのでしょうか。私はここからの指示に従いました Google AppengineでのSpring Data JPAの使用
Spring BootにDataSource
を自動設定するのに十分な情報を提供していません。そうするには、application.properties
接頭辞を付けてspring.datasource
にいくつかのプロパティを追加する必要があります。 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が必要になります。 spring-boot-starter-data-jpa
を引き込むhibernate-entitymanager
に依存しているので、Hibernateはクラスパスにいます。
Hibernateを除外するように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>
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>
私にとっては、依存関係としてh2(またはhsqldb)が含まれている限り、spring-boot-starter-data-jpa依存関係を省略し、spring-boot-starter-jdbc依存関係を使用するだけでは、魅力的に動作します。
Spring Bootはapplication.propertiesファイルでデータプロパティを探します。
Application.propertiesまたはymlファイルに定義してください。
application.properties
spring.datasource.url=xxx
spring.datasource.username=xxx
spring.datasource.password=xxx
spring.datasource.driver-class-name=xxx
独自の設定が必要な場合は、独自のプロファイルを設定し、Beanの作成中にデータソース値を使用できます。
答えるには遅すぎるなら私はしません。 Spring BootからDataSourceAutoConfigurationを除外することで、この問題を解決できました。
Spring Dataを使用してElasticSearchのAPIを実行していたときに、この例外に直面しました。私は以下をしました、そして、それは働きました。
@SpringDataApplication(exclude = {DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class})
私はorg.springframework.dataのgroupIdと2つの依存関係を持っていました、それから私は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>
@AutoConfigureTestDatabase(replace = Replace.NONE)を追加するだけで問題を解決できます
@RunWith(SpringRunner.class)
@DataJpaTest
@AutoConfigureTestDatabase(replace=Replace.NONE)
public class TestClienteRepository {
}
「APPLICATION FAILED TO START」というメッセージとともに、o.s.b.d.LoggingFailureAnalysisReporter
のタイトルにエラーメッセージが表示されました。 Eclipseのデバッグ設定に-Dspring.profiles.active=dev
を追加していないので、アクティブプロファイルがないことがわかりました。
私も同じ問題に直面しました。
Cannot determine embedded database driver class for database type NONE.
私の場合、データベースに対応するリポジトリからjarファイルを削除することで問題は解決します。問題の原因となっていたリポジトリに破損したjarファイルがありました。
私の場合は、休止状態の依存関係を引き起こし、Spring Bootが休止状態の持続性を自動設定するためのデータソースを検索するようにするために、org.jasig.casの依存関係をpomに入れました。 user672009で提案されているように、com.h2database maven依存関係を追加することでそれを解決しました。みんなありがとう!
アプリケーションにデータベースがない場合は、以下のアノテーションを追加してデータソースの自動設定を無効にしてください。
@SpringBootApplication(exclude={DataSourceAutoConfiguration.class})
これはこのエラーのためにGoogleで返された最初のトピックの1つなので、誰かが同じ問題に直面した場合のために私がしたことを投稿します。DataSourceAutoConfiguration
を除外したくありませんでした.
私の場合、他の回答者が言ったようにパラメータを設定していましたが、application.properties
ファイルは間違ったフォルダの中にありました。
このようなことがうまくいかない場合は、ファイルがsrc/main/resources
の中にあるかどうか確認してください。私の場合、それはsrc/main/resources/static
の中にありました
プロジェクトの依存関係として "spring-boot-starter-data-jpa"が本当に必要で、同時にあなたのアプリがデータベースにアクセスすることを許可したくない場合は、自動設定クラスを単に除外することができます。
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
以下の依存関係を使ってください。
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
以下の作業を行います。
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
しかし、私がdataSourceを持ちたいのなら、私は上記の設定をするべきではありません。下のリンクは、application.propertiesファイル内のすべてのプロパティに必要であることを示しています。すべてのプロパティはspring.datasource.*
で始まる必要があります
http://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html
答えは非常に簡単です。SpringBootは埋め込み可能なデータベースドライバーを探します。XMLまたは注釈の形式で構成を構成しなかった場合、この例外がスローされます。このように注釈を変更します
@EnableAutoConfiguration(exclude=DataSourceAutoConfiguration.class)
@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);
}
}
</ code>
私は上記のことをすべて試しましたが、問題を解決することができませんでした。私はSQLiteを使用していて、私のSQLiteファイルはresourcesディレクトリにありました。
a) IDEのセットアップが完了しました_
私のプロジェクトの.classpathファイルに手動で以下の行を追加する必要があります。
<classpathentry kind="src" path="resources"/>
<classpathentry kind="output" path="target/classes"/>
その後、上部のMenuBarからプロジェクトを更新して整理しました。 Project-> Clean-> My Project Nameのように。
その後、プロジェクトを実行して問題を解決しました。
application.properties 私のプロジェクトは/
spring.datasource.url=jdbc:sqlite:resources/apiusers.sqlite
spring.datasource.driver-class-name=org.sqlite.JDBC
spring.jpa.properties.hibernate.dialect=com.enigmabridge.hibernate.dialect.SQLiteDialect
spring.datasource.username=
spring.datasource.password=
spring.jpa.hibernate.ddl-auto=update
b) Jar配備が同じエラーを投げたらセットアップは完了 /
Pom.xmlに次の行を追加する必要があります。
<build>
<resources>
<resource>
<directory>resources</directory>
<targetPath>${project.build.outputDirectory}</targetPath>
<includes>
<include>application.properties</include>
</includes>
</resource>
</resources>
</build>
誰かに役立つかもしれません。
私の場合は、IDEAを使用して、out
ディレクトリを削除した後、すべて正常に戻ります。理由がわかりませんが、うまくいきました。
すでに十分な回答が投稿されています。しかし、私は自分がどんな過ちを犯し、どのようにそれを直したのかを書いています。
私の場合、私は自分のプロジェクトをpom
ではなくjar
としてパッケージ化しました
pom.xml:
...
<packaging>pom</packaging>
...
に変更されました:
...
<packaging>jar</packaging>
...
同じ間違いをしている人には役に立つかもしれません。
プロジェクトを右クリックして、次のオプションMaven - > Update Projectを選択します。これで私の問題は解決しました。
一般に、このようなエラーはJPAを使用してデータベース接続を追加するのを忘れたときに発生します。そのため、アプリケーションにデータベース関連の依存関係を追加する必要があります。
ただし、外部データベースを接続せずにJPAを使用したい場合は、依存関係にhsqldbを追加します。
これが役に立つことを願っています!
これが私がこの問題を解決した方法です。
私の場合は、外部サーバーであるMySQLサーバー用にデータソースを設定する必要がありました。
私たちみんなが知っているように、Spring bootは組み込みデータベース用にDataSourceを自動設定する機能を持っています。
したがって、私は自分のカスタム設定を使用するためにデータソースの自動設定を無効にしなければならないことに気付きました。
多くの人が前述したように、私はapplication.propertiesでSpring Bootの自動DataSource設定を無効にしました
spring.autoconfigure.exclude = org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
Hibernate-mysql.propertiesという別のファイルにすべてのHibernate設定プロパティを定義しました。
その後、私は以下の方法で私自身のカスタム休止状態設定をコーディングし、それは問題を解決しました。
カスタムプロパティファイルのプロパティに基づいて目的のDataSourceを設定し、LocalSessionFactoryBeanにデータソースやその他の休止状態の設定を追加する私の方法.
Hibernateカスタム設定クラス: -
------------------------------------------ ---------------
@Anasも同様です。私はEclipseでそれを実行することができますが、私が「Java -jar ...」を使用するとそれを実行すると、このエラーが発生します。それから私は私のJavaのビルドパスが間違っていることを見つけ、それは "src/main/resources"フォルダーがないので、アプリケーションはapplication.propertiesを見つけることができません。私はJavaのビルドパスに "src/main/resources"フォルダを追加すると、うまくいきました。
そして、あなたはあなたのApplicationクラスに "@PropertySource({" application.properties "})"を追加する必要があります。
C:\Users\admin\.IntelliJIdea2018.1\system\compile-server
を削除
私は同様の問題を抱えていて、DataSourceAutoConfigurationとHibernateJpaAutoConfigurationを除いて問題を解決しました。
私は私のapplication.propertiesファイルにこれらの2行を追加しました、そしてそれはうまくいきました。
> spring.autoconfigure.exclude[0]=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
> spring.autoconfigure.exclude[1]=org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration
Gradleを使用している場合は、以下のようにドライバの右のjarファイルを含めてください。
compile("org.mongodb:mongo-Java-driver:3.3.0")
あるいはMavenを使ってからMavenスタイルでそれをやれば、それはあなたの問題を解決するはずです。
Mavenリポジトリ からderby-10.10.1.1.jarをダウンロードして、Application/WEB-INF/lib/derby-10.10.1.1.jarのように、WEB-INF/libフォルダーに配置できます。あなたの埋め込まれたAnnotationConfigEmbeddedWebApplicationContextはデータベースドライバを拾い上げるでしょう、そしてあなたのウェブサーバは何の問題もなく走り始めるでしょう:-)
何時間も壁に頭をぶつけた後、このスレッドにやってくる人に。変更することでこのエラーを解決しました
create table `group`(
id char(19) primary key
);
に
create table if not exists `group`(
id char(19) primary key
);
resourcesディレクトリのschema.sqlファイルにあります。