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

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

ただいまの
回答率

87.78%

外部jarファイル(H2Database)をeclipse以外の開発環境でも使いたい

受付中

回答 0

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 554

score 5

前提・実現したいこと

スッキリわかるJava入門実践編の12章にて、外部jarファイルであるH2Databaseを用いたデータベースアクセスを行いたいのですが、eclipse以外の環境でもjarファイルにクラスパスを通す方法が分からずに困っております。
eclipse上での実行は一応https://para-pore.com/eclipse-h2database/ を参考にして出来ております。

発生している問題・エラーメッセージ

通常のWindowsのpowershell環境で実行しています
h2-1.4.200.jarは実行ファイル(java12_1.java)と同じフォルダ内(C:\java\test)に配置しています

PS C:\java\test> javac  java12_1.java
PS C:\java\test> java  java12_1 -cp h2-1.4.200.jar
java.lang.ClassNotFoundException: org.h2.Driver
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:602)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
        at java.base/java.lang.Class.forName0(Native Method)
        at java.base/java.lang.Class.forName(Class.java:340)
        at java12_1.main(java12_1.java:9)
java.sql.SQLException: No suitable driver found for jdbc:h2:~/rpgdb
        at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:702)
        at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:251)
        at java12_1.main(java12_1.java:17)

該当のソースコード

import java.sql.*;      /* java.sqlをインポートしておく */
public class java12_1 {
    public static void main(String[] args) {

        // ********** リスト12-1ここから(import文は上記) **********
        // STEP 0: 事前準備(JAR配置を含む)
        try {

            Class.forName("org.h2.Driver");
        } catch(ClassNotFoundException e) {
            e.printStackTrace();                        /* ドライバJARが見つからない場合の処理(*)*/
        }
        /* : */
        Connection con = null;
        try {
            // STEP 1: データベースの接続
            con = DriverManager.getConnection("jdbc:h2:~/rpgdb");    /* JDBC URLを指定 */
            // STEP 2: 送信処理
             /* *******************************
                メインのDB操作処理(後述します)
              ****************************** */
        } catch(SQLException e) {
            e.printStackTrace();                        /* 接続やSQL処理の失敗時の処理(*)*/
        } finally {
            // STEP 3: データベース接続の切断
            if(con != null) {
                try { con.close(); } catch(SQLException e) {
                    e.printStackTrace();                /* 切断失敗時の処理(*)*/
                }
            }   /* *の箇所は必要に応じて適切なエラー処理を記述します */
        }
        // ********** リスト12-1ここまで **********

    }
}

試したこと

-cpコマンドを適用するタイミングを変えたりh2-1.4.200.jarの配置場所を変えて絶対パス指定で実行したり

補足情報(FW/ツールのバージョンなど)

Java, Javacのバーションは以下の通りです

PS C:\java\test> java -version
openjdk version "14.0.2" 2020-07-14
OpenJDK Runtime Environment (build 14.0.2+12-46)
OpenJDK 64-Bit Server VM (build 14.0.2+12-46, mixed mode, sharing)

PS C:\java\test> javac -version
javac 14.0.2

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

まだ回答がついていません

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

  • ただいまの回答率 87.78%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

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