У меня есть файл JAR, который содержит приложение, а также файлы конфигурации для этого приложения. Приложение загружает файлы конфигурации из пути к классам (используя ClassLoader.getResource()
) и полностью удовлетворяет его зависимостям, используя файлы конфигурации, запеченные в JAR-файле.Могу ли я использовать classpath для переопределения файла в запущенной банке?
Иногда я хочу, чтобы приложение запускалось с немного другой конфигурацией (в частности, я хочу переопределить URL JDBC, чтобы указать на другую базу данных), поэтому я создаю новый файл конфигурации, сохраняю его в правильной структуре каталогов (что означает в директории /config
из записи CLASSPATH), и я хочу сделать что-то вроде этого:
java -cp new-config:. -jar application.jar
Но я не могу получить путь к классам, чтобы иметь запись в new-config
путь до содержимого приложения-Jar в. Является ли жестко закодированным, что содержимое JAR всегда является первым делом на пути к классам?
Вы пробовали положить конфиг вне де баночке, в его собственном файле фляги в пути относительно application.jar (../conf/config.jar)? Если вы это сделаете, я думаю, вы можете установить classpath, указывающий на это jar config в манифесте приложения, и вы можете установить новую конфигурацию, изменяя config.jar. Хотелось бы, чтобы у меня было больше времени, чтобы сделать демоверсию, чтобы подтвердить мой ответ, но я не могу ... поэтому я написал это как комментарий – JuanZe
Вы имеете в виду, а не внутри JAR? – Guss
да, а не внутри той же банки, что и приложение, помещая конфигурацию внутри второй банки ... – JuanZe