38

H2を使用して Java のデータベースに接続しようとしています (IDE として Eclipse を使用)。サンプルは (以下) をスローしClassNotFoundExceptionます。問題は、h2 jar ファイルをシステムの CLASSPATH に追加したことですprintenvコンソールで何度か確認しました。ステップを省略していますか?

コード:

import java.sql.*;

public class Program {

 /**
  * @param args
  */
 public static void main(String[] args) 
  throws Exception{

  try{
   System.out.println("hello, world!");
   Class.forName("org.h2.Driver");
   Connection conn = DriverManager.getConnection("jdbc:h2:~/testdb", "sa", "");
   // add application code here
   conn.close();
  }catch(ClassNotFoundException ex){
   System.out.println( "ERROR: Class not found: " + ex.getMessage() );

  }
  System.exit(0);

 }

}
4

15 に答える 15

38

私の場合(少し関係ありませんが、言及する価値があります)、これをmaven pomに追加すると、エラーメッセージが消えました:

  <dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <version>xxx</version> <!-- ex: 1.2.140 -->
  </dependency>

または、単体テスト中に h2 のみを使用している場合:

  <dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <version>xxx</version> <!-- ex: 1.2.140 -->
    <scope>test</scope>
  </dependency>
于 2013-07-31T18:35:41.783 に答える
8

サンプルは (以下) ClassNotFoundException をスローします。

次に、ドライバーはクラスパスにありません。

問題は、h2 jar ファイルをシステムの CLASSPATH に追加したことです。コンソールで「printenv」を介して何度か確認しました。

正確にはどのようにしましたか?得られた出力を示してください。

ステップを省略していますか?

提供された情報ではなんとも言えません。CLASSPATHただし、環境変数に依存することはとにかく悪い習慣-cpであり、コマンド ラインで Java を実行している場合は、このオプションを使用する必要があります。このような:

java -cp h2.jar com.acme.Program

常にコンソールから実行する必要がないように、[RUN] メニューを使用するときに jar ファイルを使用するように Eclipse を設定する方法はありますか?

はい。Eclipse で、JAR をプロジェクトのビルド パスに追加します。プロジェクトを右クリックし、[プロパティ] > [Java ビルド パス] > [ライブラリ] > [JARS を追加... ] を選択します(H2 JAR がプロジェクトに関連するディレクトリで使用できると仮定します)。他の IDE には、これと同等の方法があります。

于 2010-10-24T12:30:01.800 に答える
0

これは testRuntimeOnly 'com.h2database:h2:1.4.200' で機能しました

および application.yaml プロパティで # driverClassName: org:h2:Driver を削除またはコメントアウトします

springboot の最新ドキュメントによると、jdbc ドライバーは自動的に検出されるため、必要ありません。

于 2021-08-01T03:51:52.273 に答える