java.lang.ClassNotFoundException: org.sqlite.JDBC error in Sample.java program from xerial

java, sqlite

Solution

Thanks to user phew for the help/ideas.

I missed the obvious command line instructions on Xerial's site for the Sample program. To get the program to run from the command line, I had to copy the JAR file into the same folder as the .CLASS file. Then run the following command:

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

Inside the quotation marks are multiple paths, separated thru a colon (`:`) under Unix and a semicolon (`;`) under Windows. The dot as one of the paths is important - only naming the JAR file alone is not enough. A full call on Windows would be:

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

Note the semicolon instead of the colon. The order of the paths do not really matter, and `-cp` does the same as `-classpath`, just shorter.

Problem

I am trying to get Xerial's Sample class to work in Eclipse with sqlite, but I keep getting the error "ClassNotFoundException: org.sqlite.JDBC" I downloaded the sqlite-jdbc-3.7.2.jar file from https://bitbucket.org/xerial/sqlite-jdbc/downloads. Copied it into the lib folder under my project "database_test" in eclipse. Then right-clicked on the Project->Properties->Java Build Path->Libraries Tab->Add JARs->Select the jar file. I am trying to execute this code from Xerial found here: 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); } } ``` } } Every site I have been to has said add the jar file to your build path or class path and I believe I have done that, but nothing has solved the problem. Any help would be appreciated. Thanks.

Original source