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.
asked Aug 6, 2013 at 20:34
8
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%binjava.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,0721 gold badge15 silver badges30 bronze badges
answered Aug 9, 2013 at 15:26
user2646175user2646175
2411 gold badge2 silver badges7 bronze badges
1
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>
answered Feb 4, 2021 at 15:59
kira kirakira kira
861 silver badge3 bronze badges
0
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
answered Jul 13, 2017 at 22:26
Yash BansalYash Bansal
3924 silver badges10 bronze badges
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.
answered Feb 3, 2015 at 16:13
XorsistXorsist
2072 gold badges4 silver badges11 bronze badges
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
answered Jan 12, 2017 at 10:55
As said before, add the jar File to your Project.
For Android Studio / IntelliJ you just go this way:
File > Project Structure >
New Module >
Import .JAR/.AAR Package
Now select/add your .jar File and let IntelliJ do the rest.
answered Apr 5, 2017 at 14:44
PaulPaul
8031 gold badge11 silver badges16 bronze badges
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
answered Jul 25, 2018 at 15:33
Viraj SinghViraj Singh
1,8291 gold badge16 silver badges26 bronze badges
Hello, I am following the instructions per xerial’s website, by adding this dependency to my ONOS app’s pom.xml:
https://github.com/xerial/sqlite-jdbc#using-sqlitejdbc-with-maven2
<dependencies>
<dependency>
<groupId>org.xerial</groupId>
<artifactId>sqlite-jdbc</artifactId>
<version>3.8.6</version>
</dependency>
</dependencies>
I saw the jar file download just fine. I can even import org.sqlite.JDBC just fine as well. Nonetheless, I still get the following exception:
java.lang.ClassNotFoundException: org.sqlite.JDBC not found by org.tsg.inspector [181]
I am not using IntelliJ, strictly through the CLI and Maven for compilation. Could there be other dependencies that I need? If you have any insight, that would be great!!
- | Sign In
- Ask Question
Hi I am integrating SQLite with JDBC and getting the following error. What is wrong?
Exception in thread «main» java.lang.ClassNotFoundException: org.sqlite.JDBC
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
Jeet
Replied on August 03, 2015
org.sqlite.JDBC belongs to sqlite-jdbc jar, you need to include this jar in your classpath.
You can use gradle to download jar from maven repository. Find the gardle depedency
compile ‘org.xerial:sqlite-jdbc:3.8.11’
Write Answer
Я использую один простой код для доступа к базе данных SQLite из приложения Java.
Мой код
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class ConnectSQLite
{
public static void main(String[] args)
{
Connection connection = null;
ResultSet resultSet = null;
Statement statement = null;
try
{
Class.forName("org.sqlite.JDBC");
connection = DriverManager.getConnection("jdbc:sqlite:D:\testdb.db");
statement = connection.createStatement();
resultSet = statement
.executeQuery("SELECT EMPNAME FROM EMPLOYEEDETAILS");
while (resultSet.next())
{
System.out.println("EMPLOYEE NAME:"
+ resultSet.getString("EMPNAME"));
}
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
try
{
resultSet.close();
statement.close();
connection.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
}
Но этот код дает одно исключение, например
java.lang.ClassNotFoundException: org.sqlite.JDBC
Как я могу это сказать, пожалуйста, помогите мне.
06 окт. 2009, в 13:33
Поделиться
Источник
9 ответов
В вашем пути к классам должен быть драйвер JDBC SQLite.
Taro L. Saito (xerial) разветкил проект Zentus и теперь поддерживает его под именем sqlite-jdbc. Он объединяет родные драйверы для основных платформ, поэтому вам не нужно настраивать их отдельно.
Reverend Gonzo
06 окт. 2009, в 13:36
Поделиться
Если вы используете netbeans Загрузите драйвер sqlitejdbc
Щелкните правой кнопкой мыши папку «Библиотеки» в окне «Проект» и выберите «Добавить библиотеку»,
затем нажмите кнопку «Создать», введите имя библиотеки (SQLite) и нажмите «ОК»
Вы должны добавить драйвер sqlitejdbc в путь к классу, нажмите на
Добавьте кнопку Jar/Folder.. и выберите файл sqlitejdbc, который вы загрузили ранее.
Нажмите ОК, и вы готовы к работе!
lesce
04 май 2010, в 14:27
Поделиться
Если вы используете Netbeans
, используя Maven
, чтобы добавить библиотеку проще. Я попытался использовать вышеуказанные решения, но это не сработало.
<dependencies>
<dependency>
<groupId>org.xerial</groupId>
<artifactId>sqlite-jdbc</artifactId>
<version>3.7.2</version>
</dependency>
</dependencies>
Я добавил зависимость Maven
и ошибка java.lang.ClassNotFoundException: org.sqlite.JDBC
.
Olcay Ertaş
18 май 2015, в 14:35
Поделиться
Я использую Eclipse, и я скопировал ваш код и получил ту же ошибку. Затем я открыл свойства проекта → Java Build Path → Libraries- > Add External JARs…
C:jrun4Libsqlitejdbc-v056.jar
Работал как шарм. Возможно, вам потребуется перезапустить веб-сервер, если вы только что скопировали файл .jar.
MeanderingCoder
01 июнь 2011, в 00:15
Поделиться
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.swing.JOptionPane;
import org.sqlite.SQLiteDataSource;
import org.sqlite.SQLiteJDBCLoader;
public class Test {
public static final boolean Connected() {
boolean initialize = SQLiteJDBCLoader.initialize();
SQLiteDataSource dataSource = new SQLiteDataSource();
dataSource.setUrl("jdbc:sqlite:/home/users.sqlite");
int i=0;
try {
ResultSet executeQuery = dataSource.getConnection()
.createStatement().executeQuery("select * from "Table"");
while (executeQuery.next()) {
i++;
System.out.println("out: "+executeQuery.getMetaData().getColumnLabel(i));
}
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, ex);
}
return initialize;
}
user2402433
16 окт. 2013, в 10:17
Поделиться
Вам нужно загрузить и добавить SQLite JDBC-драйвер в свой путь к классам.
Вы можете скачать отсюда https://bitbucket.org/xerial/sqlite-jdbc/downloads
Если вы используете Gradle, вам нужно будет добавить зависимость SQLite:
dependencies {
compile 'org.xerial:sqlite-jdbc:3.8.11.2'
}
Следующее, что вам нужно сделать, это инициализировать драйвер:
try {
Class.forName("org.sqlite.JDBC");
} catch (ClassNotFoundException eString) {
System.err.println("Could not init JDBC driver - driver not found");
}
Thev
01 июнь 2016, в 10:13
Поделиться
connection = DriverManager.getConnection("jdbc:sqlite:D:\testdb.db");
Вместо этого поставьте
connection = DriverManager.getConnection("jdbc:sqlite:D:\testdb");
Vasanth Kumar
24 май 2012, в 14:26
Поделиться
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import javax.swing.JOptionPane;
public class Connectdatabase {
Connection con = null;
public static Connection ConnecrDb(){
try{
//String dir = System.getProperty("user.dir");
Class.forName("org.sqlite.JDBC");
Connection con = DriverManager.getConnection("jdbc:sqlite:D:\testdb.db");
return con;
}
catch(ClassNotFoundException | SQLException e){
JOptionPane.showMessageDialog(null,"Problem with connection of database");
return null;
}
}
}
Deepak S. Gavkar
31 июль 2013, в 19:02
Поделиться
Ещё вопросы
- 1Игнорируйте отсутствующие изображения в SVG с данными D3 и введите методы [дубликаты]
- 0preg_replace для сопоставления шаблона с любой стороны селектора
- 0О выравнивании данных конкретной структуры
- 0SFML возвращает окно в другой класс через конструктор, не работающий
- 1Ошибка: не найдено метаданных NgModule для ‘undefined’ в Angular2
- 0Как вписать исходный текстовый формат абзаца в элемент HTML-абзаца с помощью jquery?
- 1Recycler view не отвечает на клики
- 1как получить значения строки, когда флажок установлен в gridview
- 0Как обновить графику, чтобы избежать черного экрана?
- 1Вы можете подавить запрос «Duplicate Mark» в Revit во время программы на c #?
- 1Создание метода равных
- 1Перестановка элементов между A и B для получения равенства сумм
- 0Safari 100% DIV оставляет место на правой стороне
- 1вставить новый экземпляр, используя API GCE
- 0Отправка содержимого этой формы по электронной почте
- 0хочу вставить в первый раз посещаемость не обновлять
- 1Получение строки с сайта
- 1unregisterReceiver (получатель) в onPause заставляет получателя не регистрироваться
- 0Как я могу прочитать несколько данных, используя strcpy
- 0получение ошибок в PHP-кодировании чего-то неопределенного переменной
- 1Key Listener не работает?
- 0Угловые флажки не связываются должным образом
- 1Как Pythonic устанавливает в классе статический словарь, который можно изменять во время выполнения?
- 0Маршрутизация пользовательского интерфейса с корневым состоянием не разрешается до дочернего контроллера состояния
- 0создать класс с помощью ввода из cin, полученного с помощью оператора >>
- 1Python OpenCV предупреждение libpng: iCCP: известен неправильный профиль sRGB
- 0MySql поиск диапазона дат с месяцем и днем (любой год)
- 0Ogre3D пытается скомпилировать Tutorial Framework и продолжает получать сообщение об ошибке. Code :: Blocks
- 0Указатель на имя пользователя
- 0JQuery AutoCompleter — мульти и пользовательские данные
- 1Как получить путь для исполняемого файла, учитывая ТОЛЬКО имя исполняемого файла?
- 0Использование веб-сервиса: от C # до php
- 0В чем разница между поиском и фильтром в jquery? [Дубликат]
- 1Зависимость Android ‘com.android.support:support-core-utils’ имеет разные версии для компиляции (27.1.1) и времени выполнения (28.0.0)
- 1Реальные объявления не показываются с помощью Admob
- 1Сериализация туда-обратно хеш-карты не сохраняет порядок
- 0c # genereic sql context patameter
- 0Оператор удаления MySQLi не удаляет
- 0как предотвратить переход курсора на следующую строку в текстовой области с помощью jquery
- 0Свиток падает, когда я использую сортируемый
- 0Обход таблицы с помощью jQuery
- 0Невозможно отправить данные для просмотра в приложении nodejs
- 0Учитывая 2D массив, конвертировать в Z-порядок
- 0PHP-скрипт не выполняется на сервере Apache
- 0Фоны SVG не будут чрезмерно растягиваться, в отличие от других файлов изображений, таких как png
- 1Вызов метода из Native dll работает в первый раз, сбои во второй раз (из-за модулей fortran)?
- 1Кнопка входа в систему не может достичь [httpost]
- 0SQL: как выбрать одну строку в день
- 1генерировать данные из базы данных в Excel с помощью Python, но дата и время в Excel не правильный формат
- 1Как заставить тестовый прогон последним в visual studio с помощью NUnit
#java #sqlite #jar
#java #sqlite #банка
Вопрос:
Мой код подключения:
private Connection connect(String dbpath) {
try {
Connection conn;
Class.forName("org.sqlite.JDBC");
conn = DriverManager.getConnection("jdbc:sqlite:"
dbpath ".db");
System.out.println("Good!");
return conn;
} catch (Exception e) {
System.out.println("Error!");
return null;
}
}
dbpath = /home/username/stuff.db
Он работает нормально, когда я запускаю Idea Intellij, но когда я упаковываю в jar, он терпит неудачу.
Редактировать:
Это ошибка ниже по стеку:
ClassNotFoundException: org.sqlite.JDBC
Комментарии:
1. Было бы хорошо, по крайней мере, сделать
e.printStackTrace()
так, чтобы это дало вам более подробную информацию об ошибке. Но еслиdbpath = "/home/username/stuff.db"
затем обратите внимание, что у вас будет*.db.db
после конкатенации строк.2. Я попробую! Но .db не добавляется, это на 100% просто 1 .db. Это работает, когда я запускаю из IDE, только не работает из JAR
3. Судя по вашей правке, вы, похоже, забыли о зависимости при развертывании своего приложения. Вы можете отправить банки зависимостей вместе со своим jar или создать fat / uber jar.
Ответ №1:
} catch (Exception e) { System.out.println("Error!"); return null; }
Это проблема типа «доктор, мне больно, когда я несколько раз бью себя молотком по лицу».
Прекратите это делать.
Правильный способ обработки ошибки — это обработать ее (протоколировать, а не обрабатывать). Следующий лучший способ — выбросить исключение вперед (здесь добавьте throws SQLException
к сигнатуре вашего метода. Это вполне разумно для метода, который предназначен для подключения к базе данных, чтобы сделать это). Если вы тоже не можете этого сделать, правильный обработчик throw new RuntimeException("Uncaught", e);
— потому что ваш путь, ну, приводит к исключениям, которые больше не предоставляют необходимую вам информацию. Вы выбросили все интересные части. Скорее всего, пути к базе данных там нет (вы находитесь в другом каталоге), или, возможно, вызов CLass.forName не удался, потому что ваши зависимости нарушены.
Обычно исключение точно указывает вам, в каком из этих двух случаев заключается проблема.
Но, поскольку вы написали фрагмент, который я показал выше, теперь вы этого не делаете. Таким образом, доказывается, что сниппет — это плохо. Однако решение простое. Никогда больше не пишите такой код 🙂