Форум программистов, компьютерный форум, киберфорум
Java: IDE, инструментарий
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/21: Рейтинг темы: голосов - 21, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 06.11.2014
Сообщений: 22
1

Ошибка при подключение файла БД SQLite при сборке в Maven в Intellij IDEA

20.06.2017, 23:48. Показов 3999. Ответов 1

Author24 — интернет-сервис помощи студентам
Доброго времени суток, у меня возникла проблема с доступом к файлу БД SQLite после сборки Мавеном в Intellij IDEA.
Перерыл кучу всего на stackoverflow, но проблему решить так и не удалось. Надеюсь, что на этом форуме мои мучения подойдут к концу.

Имеется проект, структура которого представлена на прикрепленном изображении.

Подключаю файл БД таким образом:
Java
1
2
3
Class.forName("org.sqlite.JDBC");
URL dbPath = Model.class.getResource("/libs/diplom.db");
DbConnection = DriverManager.getConnection("jdbc:sqlite:"+dbPath.getPath());
pom.xml
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
 
    <groupId>Dip</groupId>
    <artifactId>Diplom</artifactId>
    <version>1.0-SNAPSHOT</version>
 
 
    <build>
        <plugins>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
 
                    <archive>
                        <manifest>
                            <mainClass>Main</mainClass>
                        </manifest>
                    </archive>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                    <appendAssemblyId>false</appendAssemblyId>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
 
            <plugin>
                <groupId>com.zenjava</groupId>
                <artifactId>javafx-maven-plugin</artifactId>
                <version>2.0</version>
                <configuration>
                    <mainClass>Main</mainClass>
                </configuration>
            </plugin>
 
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
 
 
 
    </build>
 
    <dependencies>
 
        <!-- [url]https://mvnrepository.com/artifact/org.xerial/sqlite-jdbc[/url] -->
        <dependency>
            <groupId>org.xerial</groupId>
            <artifactId>sqlite-jdbc</artifactId>
            <version>3.18.0</version>
        </dependency>
 
    </dependencies>
 
</project>
После сборки jar-файла и его запуска получаю вот такой стэктрэйс:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
C:\Users\WRTSe\IdeaProjects\Diplom\target>java -jar Diplom-1.0-SNAPSHOT.jar
file:/C:/Users/WRTSe/IdeaProjects/Diplom/target/Diplom-1.0-SNAPSHOT.jar!/libs/diplom.db
java.sql.SQLException: The database has been closed
        at org.sqlite.core.NativeDB.throwex(NativeDB.java:471)
        at org.sqlite.core.NativeDB.errmsg_utf8(Native Method)
        at org.sqlite.core.NativeDB.errmsg(NativeDB.java:137)
        at org.sqlite.core.DB.newSQLException(DB.java:921)
        at org.sqlite.core.DB.throwex(DB.java:886)
        at org.sqlite.core.NativeDB._open_utf8(Native Method)
        at org.sqlite.core.NativeDB._open(NativeDB.java:71)
        at org.sqlite.core.DB.open(DB.java:174)
        at org.sqlite.core.CoreConnection.open(CoreConnection.java:220)
        at org.sqlite.core.CoreConnection.<init>(CoreConnection.java:76)
        at org.sqlite.jdbc3.JDBC3Connection.<init>(JDBC3Connection.java:26)
        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 core.Model.getDbConnection(Model.java:37)
        at controllers.MainController.initialize(MainController.java:124)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at sun.reflect.misc.Trampoline.invoke(Unknown Source)
        at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at sun.reflect.misc.MethodUtil.invoke(Unknown Source)
        at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2566)
        at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2441)
        at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2409)
        at Main.start(Main.java:32)
        at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$162(LauncherImpl.java:863)
        at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$175(PlatformImpl.java:326)
        at com.sun.javafx.application.PlatformImpl.lambda$null$173(PlatformImpl.java:295)
        at java.security.AccessController.doPrivileged(Native Method)
        at com.sun.javafx.application.PlatformImpl.lambda$runLater$174(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$148(WinApplication.java:191)
        at java.lang.Thread.run(Unknown Source)
Путь к БД указан правильно вроде бы, но почему "The database has been closed" - для меня загадка.
Буду крайне признателен за любую помощь в решении данной проблемы.
Миниатюры
Ошибка при подключение файла БД SQLite при сборке в Maven в Intellij IDEA  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.06.2017, 23:48
Ответы с готовыми решениями:

Ошибка при сборке проекта Intellij IDEA: Gradle android module
Недавно начал изучать программирование под андроид, установил все необходимое, при создании проекта...

Ошибка 404. Проект maven intellij idea jsp + servlet
Создал проект maven в intellij idea jsp и servlet. 2 день не могу разобраться что не так. Пустой...

Ошибка при выполнении команды Make в Intellij IDEA
Здравствуйте! У меня такая ошибка в Intellij IDEA, не знаю в чем проблема. Кто-нибудь сталкивался с...

Intellij Idea + Maven + автор
При сборке, idea в Manifest библиотек ставит имя пользователя в текущей системе. Как это...

1
22 / 22 / 4
Регистрация: 21.03.2017
Сообщений: 37
18.07.2017, 14:58 2
для базы данных необходимо указывать полный путь. При этом проверьте в отладчике что путь указан верно. там еще должно быть насколько я понимаю что -то типа: "jdbc:sqlite:file://"+ полный путь к вашей базе, с указанием диска и всех каталогов и до самой базы данных, заканчиваться должно в вашем случае \diplom

Добавлено через 23 минуты
а еще что увидел, SQL требует пароль и логин по умолчанию всегда и вам надо после того как путь правильный укажите чтоб в конце вашего коннекта были и эти параметры:
DbConnection = DriverManager.getConnection("jdbc:sqlite:"+dbPath.getPath(),"sa", "");
0
18.07.2017, 14:58
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.07.2017, 14:58
Помогаю со студенческими работами здесь

IntelliJ IDEA: при открытии файла класса меняется режим Insert (вставка/замещение)
Всем привет может кто то знает как это убрать : При открытии нового класса файла или ...

Maven, Junit, Intellij Idea. Не билдит
Доброго времени суток товарищи. Наткнулся на немного непонятную мне ситуацию, надеюсь на помощь в...

Intellij IDEA maven нет tomcat
Есть несколько Intellij IDEA (2018.1.6, 2017.2.7, 2016.3.8) все ultimate но ни в одной из них нет...

Исполняемый файл Intellij IDEA & Maven
Всем привет. Я написал программку, которая читает и пишет на базу MySQL с jdbc. И теперь хочу...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru