Org sqlite jdbc ошибка

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

user2646175's user avatar

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's user avatar

AmigoJack

5,0721 gold badge15 silver badges30 bronze badges

answered Aug 9, 2013 at 15:26

user2646175's user avatar

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 kira's user avatar

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 Bansal's user avatar

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

Xorsist's user avatar

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

Chetan Bhagat's user avatar

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.

answered Apr 5, 2017 at 14:44

Paul's user avatar

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 Singh's user avatar

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

Сообщество Overcoder

#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 не удался, потому что ваши зависимости нарушены.

Обычно исключение точно указывает вам, в каком из этих двух случаев заключается проблема.

Но, поскольку вы написали фрагмент, который я показал выше, теперь вы этого не делаете. Таким образом, доказывается, что сниппет — это плохо. Однако решение простое. Никогда больше не пишите такой код 🙂

Возможно, вам также будет интересно:

  • Org postgresql util psqlexception ошибка при попытке подсоединения
  • Org postgresql util psqlexception ошибка отношение не существует
  • Org postgresql util psqlexception ошибка оператор не существует integer character varying
  • Org apache maven plugins ошибка
  • Org apache jasper jasperexception произошла ошибка при обработке

  • Понравилась статья? Поделить с друзьями:
    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии