Chargement d'un fichier de configuration depuis le classpath
Je suis en train de faire mon application Java facile à déployer sur d'autres ordinateurs et suis en train d'écrire un script ant de le faire, c'est d'aller bien.
Je vais avoir des problèmes pour charger les ressources qui sont répertoriés dans le classpath nommé dans le fichier manifest du jar.
Structure de dossier ressemble à ceci:
/MyProgram.jar
/lib/<dependencies>
/config/configuration.xml
Je ne peux pas pour la vie de me l'accès à l'configuration.xml fichier en utilisant le chargeur de classe. Elle, ainsi que toutes les dépendances sont explicitement mentionné dans le Chemin de Classe d'entrée pour le fichier manifest.
J'ai essayé de nombreuses variantes suivantes:
this.xml = Thread.currentThread().getContextClassLoader()
.getResourceAsStream(xmlName);
this.xml = this.getClass().getResourceAsStream(xmlName);
Avec xmlName comme une chaîne de toutes les valeurs suivantes:
"config/configuration.xml"
"configuration.xml"
"config.configuration.xml"
Liées à cela, j'ai aussi un log4j.les propriétés de fichier dans le répertoire config. Comment puis-je obtenir log4j pour le ramasser? Autres références dire qu'il a juste besoin d'être dans le classpath, et il est explicitement nommé dans le bocal le fichier de manifeste. Quelqu'un peut me pointer dans la bonne direction?
Mise à jour:
Voici les entrées réelles de Class-Path:
Class-Path: <snip dependencies> config/configuration.xml config/log4j.properties
OriginalL'auteur Collin | 2011-01-27
Vous devez vous connecter pour publier un commentaire.
Classpath entrées doivent être des répertoires ou des fichiers jar, pas des fichiers individuels. Essayez de changer votre classpath pour pointer vers le répertoire config à la place de l'individu fichiers de configuration.
Mieux encore serait simplement d'inclure votre répertoire config dans MyProgram.jar. Cela vous empêcherait d'avoir à ajouter spécifiquement pour le classpath.
OriginalL'auteur gcooney
Autant que je sache, log4j.xml doit être à la racine de votre classpath..
et aussi, vous pouvez lire votre fichier de configuration ci-dessous le code de script. et la config devrait être à votre classpath.
OriginalL'auteur Gursel Koca
Vous pouvez utiliser le
log4j.configuration
de la propriété du système lors du démarrage de votre application:Voir http://logging.apache.org/log4j/1.2/manual.html sous "Initialisation par Défaut de la Procédure".
Concernant les autres fichiers de configuration de ne pas être pris, qu'est-ce que votre Manifeste.mf fichier ressemble? Êtes-vous d'utiliser quelque chose comme
dans votre Manifeste.mf fichier?
OriginalL'auteur chahuistle
Concernant log4j : Si vous souhaitez utiliser un autre fichier de configuration par défaut, vous pouvez utiliser
Variantes de cette méthode statique accepter URL, Propriétés ou nom de fichier.
Il est également
pour les fichiers XML.
OriginalL'auteur Pierre Henry