Я использую Intellij IDEA для сборки проекта(javafx + hibernate), но после создания jar файла база не может быть найдена (чисто теоретически я могу создать базу при первой попытке подключения, но мне нужно подключение к существующей). Собственно вопрос в том, как сконнектиться с базой после сборки проекта. В конфигурационном файле (hibernate.cfg.xml) я перепробовал все возможные написание относительных путей к базе и всё работает только если я укажу абсолютный путь. Но мне же надо распространять приложение. Как сделать так, чтобы после установки приложения база помещалась в папку относительно запускаемого файла? И как указать путь к ней? Или, если сам алгоритм не верен, как сделать правильно?
1) Складываете свою БД в ресурс, который пакуете внутри jar
2) При первом запуске читаете свою БД из ресурса, например так:
InputStream in = getClass().getResourceAsStream("/mybd.db");
3) Записываете БД в локальный каталог, относительно себя, например так:
OutputStream os = new FileOutputStream(new File("./mydb.db"));
4) Напускаете Hibernate на чтение БД из этого файла
Update (по следам дискуссии в комментариях)
Для того, чтобы каталог создавался в том же каталоге, где лежит архив JAR, нужно сделать что-то типа:
String currentPath=MyMainClass.class.getProtectionDomain().getCodeSource().getLocation().getPath();
Грубо говоря, определяем где находится ваш main()
(а он лежит там же где находится сам JAR) и по этому пути создаем каталог куда кидаем свою БД.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
У меня есть следующий метод, который удаляет элемент массива объектов:
Начал изучать java и столкнулся с проблемой не получается сделать таблицу
При работе с матрицами, а именно с двумерным массивом назовем его int[][]a для замены строк мы можем сделать так:
Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском