1. ホーム
  2. java

[解決済み】 java.lang.ClassNotFoundException: org.sqlite.JDBC error in Sample.java program from xerial

2022-02-08 01:45:16

質問内容

XerialのSampleクラスをEclipseでsqliteで動作させようとしていますが、エラー "ClassNotFoundException: org.sqlite.JDBC" が出続けています。

sqlite-jdbc-3.7.2.jar ファイルをダウンロードしました。 https://bitbucket.org/xerial/sqlite-jdbc/downloads . eclipse のプロジェクト "database_test" の下の lib フォルダにコピーします。 そして、プロジェクト->プロパティ->Javaビルドパス->ライブラリタブ->JARの追加->jarファイルを選択して、右クリックします。 ここにあるXerialからこのコードを実行しようとしています。 https://bitbucket.org/xerial/sqlite-jdbc#markdown-header-usage

// load the sqlite-JDBC driver using the current class loader
Class.forName("org.sqlite.JDBC");

Connection connection = null;
try
{
  // create a database connection
  connection = DriverManager.getConnection("jdbc:sqlite:sample.db");
  Statement statement = connection.createStatement();
  statement.setQueryTimeout(30);  // set timeout to 30 sec.

  statement.executeUpdate("drop table if exists person");
  statement.executeUpdate("create table person (id integer, name string)");
  statement.executeUpdate("insert into person values(1, 'leo')");
  statement.executeUpdate("insert into person values(2, 'yui')");
  ResultSet rs = statement.executeQuery("select * from person");
  while(rs.next())
  {
    // read the result set
    System.out.println("name = " + rs.getString("name"));
    System.out.println("id = " + rs.getInt("id"));
  }
}
catch(SQLException e)
{
  // if the error message is "out of memory", 
  // it probably means no database file is found
  System.err.println(e.getMessage());
}
finally
{
  try
  {
    if(connection != null)
      connection.close();
  }
  catch(SQLException e)
  {
    // connection close failed.
    System.err.println(e);
  }
}

} }

どのサイトを見ても、ビルドパスやクラスパスにjarファイルを追加するように書かれていて、私もそうしたと思うのですが、何も問題は解決していません。 何か助言を頂ければ幸いです。 ありがとうございます。

解決方法は?

ユーザー phew さんのヘルプ/アイデアに感謝します。

当たり前のことを見逃していた XerialのサイトにあるSampleプログラムのコマンドライン説明書 . コマンドラインからプログラムを実行させるには、JARファイルを.CLASSファイルと同じフォルダにコピーする必要がありました。そして、次のコマンドを実行します。

java -classpath ".:sqlite-jdbc-(VERSION).jar" Sample

引用符の内側には、コロンで区切られた複数のパス( : )、Unixではセミコロン( ; Windowsでは パスのひとつであるドットは重要です。JARファイルの名前だけでは十分ではありません。Windowsでの完全な呼び出しは次のようになります。

"%JAVA_HOME%\bin\java.exe" -cp "sqlite-jdbc-(VERSION).jar;." Sample

コロンの代わりにセミコロンがあることに注意してください。パスの順番はあまり重要ではありません。 -cp と同じです。 -classpath ただ、短いだけです。