J'ai un fichier JAR qui contient une application ainsi que des fichiers de configuration pour cette application. L'application charge les fichiers de configuration à partir du classpath (en utilisant ClassLoader.getResource()
), et ses dépendances sont complètement satisfaites en utilisant les fichiers de configuration cuits dans le fichier JAR. À l'occasion, je souhaite que l'application soit exécutée avec une configuration légèrement différente (en particulier, je souhaite remplacer l'URL JDBC pour qu'elle pointe vers une base de données différente) afin de créer un nouveau fichier de configuration. ce qui signifie dans un répertoire /config
d'une entrée de classpath), et je veux faire quelque chose comme ceci:Puis-je utiliser le classpath pour remplacer un fichier dans un fichier jar en cours d'exécution?
java -cp new-config:. -jar application.jar
Mais je ne peux pas obtenir le classpath d'avoir l'entrée du chemin new-config
avant le contenu de l'application JAR. Est-ce codé en dur que le contenu du JAR est toujours la première chose sur le classpath?
Avez-vous essayé de mettre la config en dehors de pot, dans son propre fichier jar dans un chemin relatif à application.jar (../conf/config.jar)? Si vous le faites, je pense que vous pouvez définir le chemin de classe pointant vers ce fichier config dans le manifeste de l'application et vous pouvez définir la nouvelle configuration en modifiant le fichier config.jar. Je voudrais avoir plus de temps pour faire une démo pour confirmer ma réponse, mais je ne peux pas ... donc je l'ai écrit comme un commentaire – JuanZe
Vous voulez dire, au lieu de l'intérieur du JAR? – Guss
oui, au lieu de l'intérieur du même pot que l'application, mettre la config dans un second pot ... – JuanZe