У меня проблема с моим проектом.У меня есть соединение JDBC с моей БД sqllite.Но я не могу использовать относительный путь, я всегда получаю ошибку.Это мои настройки. В проекте db-layer.В классе GradingSystemDao.
private static final String DB_LINK = "jdbc:sqlite:C:\\Users\\Leumas\\eclipse-workspace\\SA\\db-layer\\db-layer\\d\\test.db";
public GradingSystemDao() {
// constructor
}
/**
* Creates the link to the db.
*
* @return The connection of the db.
*/
private Connection getConnection() {
System.out.println("DBLINK: " + DB_LINK);
Connection c = null;
try {
Class.forName("org.sqlite.JDBC");
c = DriverManager.getConnection(DB_LINK);
} catch (SQLException | ClassNotFoundException e) {
System.out.println("Connection do not work.");
e.printStackTrace();
}
return c;
}
Когда я использую относительный путь, я получаю, что база данных закрыта из-за ошибки.Та же ошибка в этом URL: https://github.com/xerial/sqlite-jdbc/issues/354
Но я не могу это исправить, мои пути не очень длинные.
Я думаю, что это структура моего проекта, созданная с помощью Maven.
структура проекта
Мои настройки в pom.xml в логике.
<dependency>
<groupId>de.sf.grasys</groupId>
<artifactId>db-layer</artifactId>
<version>3.0.0</version>
</dependency>
Мои настройки в pom.xml в пользовательском интерфейсе.
<dependency>
<groupId>de.sf.grasys</groupId>
<artifactId>logic</artifactId>
<version>3.0.0</version>
</dependency>
Когда я также создаю исполняемый файл jar, он не работает.Надеюсь, вы мне поможете.
Редактировать
Это всего лишь небольшой проект, поэтому обработка исключений не так важна.
DBLINK: jdbc:sqlite:..\d\test.db
Connection do not work.
java.sql.SQLException: path to '..\d\test.db': 'C:\Users\Leumas\eclipse-workspace\SA\userinterface\..\d' does not exist
at org.sqlite.core.CoreConnection.open(CoreConnection.java:192)
at org.sqlite.core.CoreConnection.<init>(CoreConnection.java:76)
at org.sqlite.jdbc3.JDBC3Connection.<init>(JDBC3Connection.java:25)
at org.sqlite.jdbc4.JDBC4Connection.<init>(JDBC4Connection.java:24)
at org.sqlite.SQLiteConnection.<init>(SQLiteConnection.java:45)
at org.sqlite.JDBC.createConnection(JDBC.java:114)
at org.sqlite.JDBC.connect(JDBC.java:88)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:270)
at de.sf.grasys.persistence.GradingSystemDao.getConnection(GradingSystemDao.java:49)
at de.sf.grasys.persistence.GradingSystemDao.getAllSchoolClass(GradingSystemDao.java:269)
at de.sf.grasys.service.GradingSystem.loadDataFromDatabase(GradingSystem.java:33)
at de.sf.grasys.ui.Main.start(Main.java:47)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$161(LauncherImpl.java:863)
at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$174(PlatformImpl.java:326)
at com.sun.javafx.application.PlatformImpl.lambda$null$172(PlatformImpl.java:295)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$173(PlatformImpl.java:294)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$null$147(WinApplication.java:177)
at java.lang.Thread.run(Thread.java:748)