Netbeans, проект Java SE. Есть такой код для подключения БД в проект.
String DB_PATH = "resources/MAIN.s3db";
public void connect(){
try{
Class.forName("org.sqlite.JDBC");
try{
String path = getClass().getResource("/resources/MAIN.s3db").toString();
System.out.println(path);
conn = DriverManager.getConnection("jdbc:sqlite::resource:" + path);
//Способ1. РАБОТАЕТ из IDE
//conn = DriverManager.getConnection("jdbc:sqlite:" + DB_PATH);
statmt = conn.createStatement();
} catch (SQLException ex) {
Logger.getLogger(DBConnection.class.getName()).log(Level.SEVERE, null, ex);
}
}catch(ClassNotFoundException e){
System.err.print("Драйвер базы данных org.sqlite.JDBC не найден. ");
System.err.println("Проверьте наличие файла libs/sqlitejdbc.jar.");
}
}
Внутри IDE работает способ 1, но я хочу положить БД в jar-ник. Способ через "jdbc:sqlite::resource:" не работает. Как правильно загружать sqlite-базу? Или как собрать проект, чтобы файл БД был рядом с jar?
run:
file:/D:/Projects/MonetaryCounter/build/classes/resources/MAIN.s3db
апр 08, 2017 9:32:44 AM org.models.db.DBConnection connect
SEVERE: null
java.sql.SQLException: path to ':resource:file:/D:/Projects/MonetaryCounter/build/classes/resources/MAIN.s3db': 'D:\Projects\MonetaryCounter\:resource:file:' does not exist
at org.sqlite.Conn.<init>(Conn.java:41)
at org.sqlite.JDBC.connect(JDBC.java:53)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:270)
at org.models.db.DBConnection.connect(DBConnection.java:30)
at org.controllers.DBControl.<init>(DBControl.java:17)
at org.controllers.frames.MainFrame.initMyComponents(MainFrame.java:371)
at org.controllers.frames.MainFrame.<init>(MainFrame.java:22)
at org.controllers.frames.MainFrame.lambda$main$0(MainFrame.java:470)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
Если вы работаете с Maven, то необходимо вписать в нем помимо папок с тестами и исходниками, путь к ресурсам. После этого можно обращаться как обычно.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости