JDBC SqlLite и Maven - PullRequest
       2

JDBC SqlLite и Maven

0 голосов
/ 28 ноября 2018

У меня проблема с моим проектом.У меня есть соединение 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)

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

Я нашел решение только локальным.

private static final String DB_LINK = "jdbc:sqlite:..\\db-layer\\db-layer\\d\\test.db";

Редактировать Хорошо, оно работает в затмении, но если я создаю исполняемый файл, оно не работает.

 C:\Users\Leumas\Desktop>java -jar Benotungssystem.jar
 Connection do not work.
java.sql.SQLException: path to '..\db-layer\db-layer\d\test.db':        'C:\Users\Leumas\Desktop\..\db-layer' 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(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at de.sf.grasys.persistence.GradingSystemDao.getConnection(GradingSystemDao.java:48)
    at de.sf.grasys.persistence.GradingSystemDao.getAllSchoolClass(GradingSystemDao.java:268)
    at de.sf.grasys.logic.GradingSystem.loadDataFromDatabase(GradingSystem.java:34)
    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(Unknown Source)

Я хочу, чтобы путь был в проекте, чтобы он работал на других ПК.

0 голосов
/ 29 ноября 2018

Ваши ожидания относительно «текущей рабочей папки» при запуске вашего приложения неверны.Абсолютный путь, который вы используете:

C:\Users\Leumas\eclipse-workspace\SA\db-layer\db-layer\d\test.db

На основании ошибки относительный путь разрешается в

C:\Users\Leumas\eclipse-workspace\SA\d\test.db

Проблема в том, что папка C:\Users\Leumas\eclipse-workspace\SA\d не существует.

Убедитесь, что ваш относительный путь указывает на существующую папку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...