Как упаковать базу данных SQLite в банку? - PullRequest
1 голос
/ 02 декабря 2011

У меня есть проект Java, который использует небольшую базу данных SQLite.

Теперь я хочу создать исполняемый файл JAR с файлом базы данных и драйвером ( sqlitejdbc-v056 ) внутри, чтобы иметь один, содержащий все пакеты.

Моя структура пакета выглядит следующим образом:

Bank
|
| 
+---src
|   ...
|           
+---bin
|   ...
|           
+---data
|       bank_database.db
|       
+---img
|       ajax-refresh-icon.gif
|       
+---doc
|       Datenbankschema.uxf
|       
\---resources
        sqlitejdbc-v056.jar

Я обращаюсь к БД с помощью этого небольшого класса Java:

package model;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DBHandle {

    Connection conn;

    public DBHandle() throws Exception {
        Class.forName("org.sqlite.JDBC");
    }

    public Connection openConnection() throws SQLException {
        conn = DriverManager.getConnection("jdbc:sqlite:data\\bank_database.db");
        return conn;
    }

    public void closeConnection() throws SQLException {
        if (!conn.isClosed()) {
            conn.close();
        }

    }

}

Если я упаковываю все эти вещи в банку с помощью менеджера экспорта Eclipse и пытаюсь выполнить его, для драйвера JDBC выдается ClassNotFoundException.

Как я могу решить эту проблему?

Можно ли даже изменить ресурсы в банку относительно базы данных?

Ответы [ 3 ]

3 голосов
/ 02 декабря 2011

AFAIK, вы не можете изменять ресурсы внутри фляги без особых хлопот (в основном это почтовый индекс, и поэтому это должно быть возможно, но JVM и т. Д. Могут блокировать файлы).

Кроме того, вы не можете положить одну банку в другую. Тем не менее, вы можете распаковать банку с драйверами и включить содержимое в вашу банку, если вы этого хотите. Плагин сборки Maven имеет цель, которая делает это: jar-with-dependencies.

1 голос
/ 02 декабря 2011

Чтобы решить ClassNotFoundException, вам нужно добавить sqlite jar в classpath

см .: http://docs.oracle.com/javase/6/docs/technotes/tools/windows/classpath.html

0 голосов
/ 02 декабря 2011

Я предпочитаю использовать утилиту под названием одна банка.Вы можете использовать call it от ant или maven, и я использую это как для работы, так и для моих личных проектов.У меня есть достойная статья в блоге, в которой объясняется, как ее использовать: Создание автономных исполняемых Jar-файлов 2 способами

...