2017-08-22 17 views
3

私はSpringの簡単な起動アプリケーション(Spring Rooから生成)を持っています。Springブート:ドライバクラスを読み込めません:org.hsqldb.jdbcDriver

データベースは、次のように構成されています

<dependency> 
    <groupId>org.hsqldb</groupId> 
    <artifactId>hsqldb</artifactId> 
    <scope>provided</scope> 
</dependency> 

私はアプリケーションを起動すると、私はエラーを取得:

Caused by: java.lang.IllegalStateException: Cannot load driver class: org.hsqldb.jdbcDriver 
    at org.springframework.util.Assert.state(Assert.java:392) ~[spring-core-4.3.3.RELEASE.jar:4.3.3.RELEASE] 
    at org.springframework.boot.autoconfigure.jdbc.DataSourceProperties.determineDriverClassName(DataSourceProperties.java:214) ~[spring-boot-autoconfigure-1.4.1.RELEASE.jar:1.4.1.RELEASE] 
ここ

spring.datasource.driver-class-name=org.hsqldb.jdbcDriver 
spring.datasource.url=jdbc\:hsqldb\:mem\:PetClinic 
spring.jpa.hibernate.naming.strategy=org.hibernate.cfg.ImprovedNamingStrategy 
spring.messages.encoding=ISO-8859-1 
spring.messages.fallback-to-system-locale=false 
spring.thymeleaf.mode=html 

は、私はHSQLDBの依存関係を宣言した方法です

Spring-boot-autoconfigureモジュールは、のクラスを読み込もうとします現在のコンテキストクラスをロードするユーティリティクラス。

Mavenの依存関係を読み込むTomcatコンテナを使用しているので、このメソッドがうまく動作するのだろうか? なぜlibsディレクトリのJARを使っても、Springはそれを見つけることができません。

答えて

4

あなたが与えたスコープが<scope>provided</scope>であることがわかります。私はTomcatがhsqldb.jarをそのままの状態で提供しているとは思いません。

したがって、指定されたスコープを削除してみてください。

3
  1. ので、アプリケーションのプロパティ

から両方spring.datasource.driver-class-namespring.datasource.urlプロパティを削除し、あなたのpom.xml

  • から<scope>provided</scope>を削除します。spring.datasource.urlが与えられたときにドライバのクラス名は春のように冗長である

    • Bootは自動的に正しいドライバをロードしようとします。
    • 埋め込みデータベースを使用したいので、あなたはspring.datasource.urlをまったく提供する必要はありません。

      春ブーツが自動設定を組み込みことができH2、HSQLとダービーデータベース:ちょうど

    関連ドキュメントはスニペット(HSQLDBのような)クラスパス上の組み込みデータベースのJARを持っている必要があります。 接続URLを指定する必要はありません。使用する組み込みデータベースに依存するビルド を含めるだけです。

    SpringブートのドキュメントのWorking with SQL databasesセクションをお読みください。私が言ったことはすべてそこに書かれているので、あなたはもっと詳しく知ることができます。

  • 関連する問題