質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.47%

  • Java

    14102questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • Spring Boot

    535questions

    Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Spring Boot2でHSQLDBを使用しようとするとエラー

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 2,032

Attsu

score 6

Spring BootでデータベースライブラリとしてHSQLDBを使用して開発を行いたいのですが以下のような
エラーが発生するので対応に困っています。


APPLICATION FAILED TO START


Description:

Failed to bind properties under '' to com.zaxxer.hikari.HikariDataSource:

Property: driverclassname
Value: org.hsqldb.jdbc.JDBCDriver
Origin: "driverClassName" from property source "source"
Reason: Unable to set value for property driver-class-name

Action:

Update your application's configuration

pomには以下のように組み込み済みです。
<dependency>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
</dependency>

どなたかご教授いただけると幸いです。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • euledge

    2018/04/16 01:44

    application.properties または application.yml に書いてあるspring.datasourceの設定を記載してください

    キャンセル

  • Attsu

    2018/04/16 01:47

    以下のように記載しております。spring.datasource.url=jdbc:hsqldb:file:./db/testdb;shutdown=true

    キャンセル

  • asahina1979

    2018/04/16 07:10 編集

    そこだけじゃなく 3つ以上あるはずですよ

    キャンセル

回答 2

checkベストアンサー

0

最小限の設定は以下の通りですがこれで失敗しているならば hsqldb-*.jar が破損しています。  
mvn Projectのようなので ${user.home}/.m2 (C:\Users\username\.m2) を削除後 プロジェクトのアップデートを実行してください
※ jdbc:hsql: までは共通です。

application.properties

spring.datasource.url=jdbc:hsqldb:mem:test
spring.datasource.username=sa
spring.datasource.password=
spring.datasource.driver-class-name=
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.HSQLDialect

 以下は誤った回答だった

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

のように null じゃなく 0文字の ブランクを設定してたりしませんか?

設定しない場合

spring.datasource.driver-class-name=

とするかその行自体不要です

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/04/16 07:25

    注)spring.datasource.driver-class-name だけではなく他のpropertyも同様

    キャンセル

  • 2018/04/17 01:37

    ありがとうございます。試してみましたが以下のエラーが表示されます。
    ***************************
    APPLICATION FAILED TO START
    ***************************

    Description:

    Failed to auto-configure a DataSource: 'spring.datasource.url' is not specified and no embedded datasource could be auto-configured.

    Reason: Failed to determine a suitable driver class


    Action:

    Consider the following:
    If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.
    If you have database settings to be loaded from a particular profile you may need to activate it (no profiles are currently active).

    インストールが必要なのでしょうか。

    キャンセル

0

エラーメッセージに
Reason: Unable to set value for property driver-class-name
と書かれていますが、その意味の通り driver-class-nameの記載が抜けているのではないでしょうか?

spring.datasource.url=jdbc:hsqldb:file:./db/testdb;shutdown=true
spring.datasource.username=ユーザー名
spring.datasource.password=パスワード
spring.datasource.driver-class-name=org.hsqldb.jdbc.JDBCDriver

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/04/16 02:02

    ユーザー名、パスワードとありますがJDBCドライバは特にインストールしなくてもpomで必要なライブラリ情報を記述すればタウンロードして組み込むため必要ないという認識ですがあっているでしょうか。

    キャンセル

  • 2018/04/16 02:22

    JDBCドライバーは、POMによりインストールされますがHSQLDBに接続する際にどのクラスを用いてユーザー、パスワードに何を使用するかという接続のための情報を指定する必要があります。
    下記の公式ページにはMySQLを使用した場合のapplication.propertiesの記載例があります。

    https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-sql.html#boot-features-connect-to-production-database

    キャンセル

  • 2018/04/16 02:51

    何度も申し訳ございません。調べたところspring.datasource.url=jdbc:hsqldb://ホスト名/データベース名
    spring.datasource.username=利用者名
    spring.datasource.password=パスワード
    spring.datasource.driverClassName=com.mysql.hsqldb.Driver
    のように入力すればよいことは分かったのでですがホスト名、データベース名、利用者名、パスワードに何を入力すればよいのかわかりません。HSQLDBのインストールが必要というわけではありませんよね。

    キャンセル

  • 2018/04/16 06:43

    HSQLDBには、動作するときに4つのモードがあります。
    1. インメモリモード
    2. スタンドアロンモード
    3. サーバモード
    4. Webサーバモード

    1,2はプログラムに組み込み用途で使用するもので、Javaプログラムから直接アクセスします。
    3,4はサーバーとして動作し複数のプログラムでアクセスが必要な場合に用います。したがって事前にサーバーとして動かす必要があります。

    今回はどちらの用途で使用しますか?
    モードにより接続文字列の書き方が変わります。

    私の書いた jdbc:hsqldb:file:./db/testdb はスタンドアロンモードでjarのあるフォルダの下の ./db フォルダにtestという名前のDBファイルができてその中にテーブルが存在します。

    一方、Attsuさんの書いたjdbc:hsqldb://ホスト名/データベース名はサーバモードでホスト名はサーバーモードで動いているデータベースのあるPCのホスト名またはIPアドレスを入れます。(自分自身であれば localhost)

    下記記事に動かし方は載っています。
    https://qiita.com/opengl-8080/items/caaa68320e680a578ea1

    また、特に指定がない場合は慣例的にusernameは sa passwordは 空白 です。

    キャンセル

  • 2018/04/16 07:34 編集

    You often do not need to specify the driver-class-name, since Spring Boot can deduce it for most databases from the url.

    URLから推論できるから基本的に必要ありません。


    これは `resource:/META-INF/services/java.sql.Driver` で読み込まれてるクラス以外を利用したい場合に必要なだけです
    また想定したドライバー以外を使われた場合にも必要でしょう

    キャンセル

  • 2018/04/16 07:47

    asahina1979さん訂正ありがとうございます。毎回記載していたのですが確かに冗長ですね。勉強になりました。

    キャンセル

  • 2018/04/17 02:32

    以下のようにpropertiesに記載しましたがエラー発生してしまいます。。。
    spring.datasource.url=jdbc:hsqldb//localhost
    spring.datasource.username=sa
    spring.datasource.password=
    spring.datasource.driver-class-name=org.hsqldb.JDBCDriver



    Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.zaxxer.hikari.HikariDataSource]: Factory method 'dataSource' threw exception; nested exception is java.lang.IllegalStateException: Cannot load driver class: org.hsqldb.JDBCDriver
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185) ~[spring-beans-5.0.4.RELEASE.jar:5.0.4.RELEASE]
    at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:579) ~[spring-beans-5.0.4.RELEASE.jar:5.0.4.RELEASE]
    ... 41 common frames omitted
    Caused by: java.lang.IllegalStateException: Cannot load driver class: org.hsqldb.JDBCDriver
    at org.springframework.util.Assert.state(Assert.java:94) ~[spring-core-5.0.4.RELEASE.jar:5.0.4.RELEASE]
    at org.springframework.boot.autoconfigure.jdbc.DataSourceProperties.determineDriverClassName(DataSourceProperties.java:224) ~[spring-boot-autoconfigure-2.0.0.RELEASE.jar:2.0.0.RELEASE]
    at org.springframework.boot.autoconfigure.jdbc.DataSourceProperties.initializeDataSourceBuilder(DataSourceProperties.java:176) ~[spring-boot-autoconfigure-2.0.0.RELEASE.jar:2.0.0.RELEASE]
    at org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration.createDataSource(DataSourceConfiguration.java:43) ~[spring-boot-autoconfigure-2.0.0.RELEASE.jar:2.0.0.RELEASE]
    at org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration$Hikari.dataSource(DataSourceConfiguration.java:81) ~[spring-boot-autoconfigure-2.0.0.RELEASE.jar:2.0.0.RELEASE]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_131]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_131]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_131]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_131]
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) ~[spring-beans-5.0.4.RELEASE.jar:5.0.4.RELEASE]
    ... 42 common frames omitted

    キャンセル

  • 2018/04/17 06:22

    spring.datasource.driver-class-nameに指定するのは、
    最初の質問の中にエラーとして出されているように

    org.hsqldb.JDBCDriver ではなく
    org.hsqldb.jdbc.JDBCDriver ではないでしょうか?

    キャンセル

  • 2018/04/18 01:48

    propertyを正しく修正してもhibernate-entitymanagerでエラーが出ていたのでcoreとの依存関係が壊れているのではないかと推測し、二つを除去後、再実行したところ立ち上がりました。euledge様、asahina1979様、当方の技術不足による粗い質問にも丁寧に対応していただき本当にありがとうございました。

    キャンセル

関連した質問

同じタグがついた質問を見る

  • Java

    14102questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • Spring Boot

    535questions

    Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。