12

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.

user2646175
  • 241
  • 1
  • 2
  • 7
  • 1
    Assuming you're using Eclipse or Netbeans - if `DriverManager.getConnection()` is not underlined red (Class/Method not found) and the program compiles fine then its (almost) safe to assume you properly imported the *.jar file. You could try and expand the `libs` folder in your **Files/Projects** window on the left side, then digg into the `sqlite-jdbc-3.7.2.jar`-file and see if `org`->`sqlite`->`JDBC` exists. – phew Aug 06 '13 at 20:46
  • Thanks for the reply. I am using Eclipse, and I opened the jar file I downloaded from Xerial and the folder structure org/sqlite/JDBC.class and org/sqlite/JDBC.java both exist in the JAR file. Running javac Sample.java returns no errors. Nothing is underlined in red in Eclipse either... – user2646175 Aug 06 '13 at 20:57
  • Did you run the program within the IDE or did you compile it to `.jar` and ran it via console? EDIT: Also I remember Eclipse offers you `Add external JARs` aswell (I didn't use Eclipse in a while though) - you could try that, too, it should use the full path to the library instead of the relative path from the project's root directory. – phew Aug 06 '13 at 21:07
  • I tried the "Add External JARs" as well. I might be compiling/running it incorrectly. I first tried simply running it at the console with: javac Sample.java -> java Sample... and that resulted in the error. Running it within Eclipse just results in the console window in eclipse showing "SQLite Java Application". Do I have to do anything else with the JAR file other than just copying it into my lib folder and adding it to the Build Path? – user2646175 Aug 06 '13 at 21:15
  • When you use `javac` to compile the `Sample.java` to `Sample.class` you will have to make sure the `lib` path containing the `sqlite-jdbc-3.7.2.jar` is still in the same place in relation to the `Sample.class`. Try making a folder `"MyProgram"`, put `Sample.class` into that folder **AND** the `lib` folder containing the sql-connector aswell; You should have something like `MyProgram/Sample.class` and `MyProgram/lib/sqlite-jdbc-3.7.2.jar`. Then try running it via console. – phew Aug 06 '13 at 21:32
  • Thanks for the help, unfortunately that didn't resolve the issue either... – user2646175 Aug 06 '13 at 23:05
  • I missed the obvious instructions on Xerial's site... should have run this at the command line: java -classpath ".:sqlite-jdbc-(VERSION).jar" Sample – user2646175 Aug 07 '13 at 15:13
  • Allright, maybe you answer your own question so its clear to others what was going on, too. Good thing you figured it out. Rgrdz – phew Aug 08 '13 at 14:24

7 Answers7

12

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.

AmigoJack
  • 5,234
  • 1
  • 15
  • 31
user2646175
  • 241
  • 1
  • 2
  • 7
5

you can add it by converting your project to maven and the dependency(from https://mvnrepository.com) to your pom.xml as:

</dependency>
    <!-- https://mvnrepository.com/artifact/org.xerial/sqlite-jdbc -->
    <dependency>
        <groupId>org.xerial</groupId>
        <artifactId>sqlite-jdbc</artifactId>
        <version>3.34.0</version>
    </dependency>
kira kira
  • 86
  • 1
  • 3
2

All the above solutions works well, when you are dealing with the desktop JAVA Application. In the case of WebAPP Application, following above solutions will not work. Actually it is the issue with your App server, that is you needed to add sqlite-jar under your WEB-INF/lib and then only you will be able to run your webapp successfully.

For doing so you can follow below steps:

Go to:

Project-> Properties-> Deployment Assembly-> Add-> Archives From File System -> Next -> Add

Navigate to the folder where you have your sqlite-jar, select it and hit OK.

Click Finish. OK.

Done, you should be able to run your app now.

Thanks

Yash Bansal
  • 402
  • 5
  • 10
1

One way that worked for me is to go to JRE System Library -> right clik -> build path -> configure build path -> add external jars -> select the jar and compile.

Xorsist
  • 207
  • 2
  • 4
  • 11
1

first you can download sqlite-jdbc-3.8.11.2 and after add jar file in your project

Window > Show_view > Package Explorer

step-1: right click on referenced libraries
step-2: select Built path
step-3: configure Built path
step-4: Add External jars file
step-5: add sqlite-jdbc-3.8.11.2
step-6: ok

or second way useful


your project can set the Classpath : Lib/sqlite-jdbc-3.8.11.2.jar

1)create a folder "Lib" in your project workspace 
2)"Lib" folder paste jar file like "sqlite-jdbc-3.8.11.2.jar"
3)After Double click on your project file i.e. 'MANIFEST.MF'
4)select Runtime(Bottom view panel) 
5)plug-in Classpath(Bottom_right position) to add jar file like "Lib/sqlite-jdbc-3.8.11.2.jar"

this working 100% sure..thanks
Chetan Bhagat
  • 610
  • 6
  • 21
0

As said before, add the jar File to your Project.

For Android Studio / IntelliJ you just go this way:

File > Project Structure >

enter image description here

New Module >

enter image description here

Import .JAR/.AAR Package

enter image description here

Now select/add your .jar File and let IntelliJ do the rest.

Paul
  • 823
  • 1
  • 11
  • 18
0

Step 1:

Copy sqlite library.


Step 2:

paste the library in 'WebContent/WEB-INF/lib' directory you can also do it by selecting 'lib' folder in eclipse and pressing Ctrl + V

Step 3:

Restart the server and hopefully problem should be fixed
Viraj Singh
  • 1,951
  • 1
  • 17
  • 27