при потключении к h2 в jar вылетает nullpointerexception

376
28 декабря 2016, 03:36

Создаю десктоп приложение на джаве. Для хранение данных решил использовать H2 бд. Подключаюсь к ней при помощи такого url:

"jdbc:h2:~/aleksei"

где aleksei - название моей бд. Если запускать экспортированный jar на своем компьютере всё нормально работает, но если сделать это с другого компьютера (предварительно поменяв url к aleksei.h2.db который засунул в корень проекта на "jdbc:h2:file:/aleksei") вылетает nullpointerexception:

java.lang.NullPointerException
at gui.GUI.initialize(GUI.java:89)
at gui.GUI.<init>(GUI.java:71)
at gui.GUI$1.run(GUI.java:58)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

GUI.java:89 - просто создаю лейбл с текстом, который беру из бд.

JLabel topicName = new JLabel(topicService.getById(1L).getName());

так создаю датасорс

  private DataSource initiateDataSource() {
    BasicDataSource  bds = new BasicDataSource();
    //bds.setUrl("jdbc:h2:~/aleksei"); этот вариант работает, но только на моем pc (на других - npe)
    bds.setUrl("jdbc:h2:file:/aleksei");//пробую этот вариант, чтоб работала на других компьютерах, но в таком случае даже у меня вылетает npe.
    bds.setUsername("aleksei");
    bds.setPassword("");
    return bds;
}

В оф. документации написано, что это можно сделать как-то через zip архив (не очень понял как он создается). Подскажите пожалуйста, кто в курсе, как это правильно делается.

UPD Поменял урл на "jdbc:h2:file:./aleksei", который требует расположения файла aleksei.h2.db в корне приложения. Из Эклипса всё запускается, но когда я экспортирую проект в jar, там корнем становится папка src, и этот путь уже не актуален. Кто знает как это пофиксить?

READ ALSO
Connection timed out JavaMail API GMail

Connection timed out JavaMail API GMail

Использую JavaMail API для отправки почты

820
Прикладное программирование C++/Java [требует правки]

Прикладное программирование C++/Java [требует правки]

В интернете довольно много обсуждений по этому поводуИнтересует мнение исходя из нынешнего времени 2016/2017

427
Поле ввода с маской ММ/ГГ

Поле ввода с маской ММ/ГГ

Прошу покритиковать код с примерами чем бы вы что заменилиДан кусок кода и он касается только поля "срок действия"

429