J'ai un fichier JAR exécutable de base avec manifest.txt contenant la classe MainClass et d'autres dépendances de fichiers jar. Je voulais déplacer mon fichier de configuration, "application.properties" en dehors du pot dans un répertoire où il est facile à configurer/maintenir. Le code java fait un simple ResourceBundle.getBundle ('application.props') pour le charger.Java: impossible de charger applications.properties
J'ai une configuration de répertoire qui ressemble à ceci:
/bin/run.sh
/lib/stuff.jar
/common/application.properties
Mon run.sh semble similaire à ceci:
TOOLNAME="stuff.jar"
CLASSPATH="../common"
java -cp ${CLASSPATH} -Dapplication.props=application -jar ../lib/${TOOLNAME}.jar &
Quand je lance cela, les pistes de pot, mais semble toujours pas pour trouver le fichier application.properties.
Je ne suis pas sûr si cela est en quelque sorte dû au manifeste.txt substituant mon -D paramètre. Vous vous demandez également s'il est possible de déplacer le chemin de classe pour ce dossier "../common" dans le manifeste.txt?
Merci! Jusqu'à présent, j'ai essayé de mettre "../common" dans le classpath manifeste comme suggéré, mais il ne semble toujours pas le voir. L'option -jar ne remplace pas les paramètres -D, n'est-ce pas? – Will
Je ne crois pas que '-D' est ignoré ici. Vous pouvez l'essayer en supprimant votre paramètre '-jar', en mettant votre jar dans les arguments' -cp' et en spécifiant explicitement votre classe principale. Si tout fonctionne alors, vous pouvez revenir en arrière et essayer de faire fonctionner le paramètre '-jar'. – tangens
Il semble fonctionner si je place le fichier de propriétés dans le même répertoire que le fichier jar et que je spécifie "." dans le classpath manifeste. Cela ne fonctionne pas si je spécifie "../common" cependant, cela pourrait-il être une fonctionnalité de sécurité pour restreindre le classpath aux répertoires seulement en dessous? – Will