Создаю десктоп приложение на джаве. Для хранение данных решил использовать 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, и этот путь уже не актуален. Кто знает как это пофиксить?
Виртуальный выделенный сервер (VDS) становится отличным выбором
В интернете довольно много обсуждений по этому поводуИнтересует мнение исходя из нынешнего времени 2016/2017
Прошу покритиковать код с примерами чем бы вы что заменилиДан кусок кода и он касается только поля "срок действия"