Kann ich den Klassenpfad verwenden, um eine Datei in einer JAR-Datei zu überschreiben, die gerade ausgeführt wird?
Ich habe eine JAR-Datei, die eine Anwendung sowie Konfigurationsdateien für diese Anwendung enthält. Die Anwendung lädt Konfigurationsdateien aus dem Klassenpfad (mitClassLoader.getResource()
) und hat seine Abhängigkeiten vollständig mit den Konfigurationsdateien in der JAR-Datei befriedigt.
Gelegentlich möchte ich, dass die Anwendung mit einer etwas anderen Konfiguration ausgeführt wird (insbesondere, dass die JDBC-URL überschrieben wird, um auf eine andere Datenbank zu verweisen), also erstelle ich eine neue Konfigurationsdatei und speichere sie in der richtigen Verzeichnisstruktur (dh in einer Verzeichnis/config
eines Klassenpfadeintrags), und ich möchte so etwas tun:
java -cp new-config:. -jar application.jar
Aber ich kann nicht den Klassenpfad bekommen, um das zu habennew-config
Pfadeintrag vor dem Inhalt der Anwendungs-JAR. Ist es hartcodiert, dass der Inhalt der JAR immer das erste auf dem Klassenpfad ist?