Я использую 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) и по этому пути создаем каталог куда кидаем свою БД.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
У меня есть следующий метод, который удаляет элемент массива объектов:
Начал изучать java и столкнулся с проблемой не получается сделать таблицу
При работе с матрицами, а именно с двумерным массивом назовем его int[][]a для замены строк мы можем сделать так:
Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском