2010-10-06 12 views
1

Je rencontre des problèmes avec le fichier de propriétés lorsque j'essaie de rendre mon application Java autonome un fichier exécutable. J'ai 2 propriétés fichier, selon la machine où son en cours d'exécution est initialisé. À l'intérieur de l'éclipse, cela fonctionnait bien. J'utilisais:fichier de propriétés ne fonctionne pas à l'intérieur du pot

Properties configProps = new Properties(); 
.... 
if(machine1) 
.... 
configProps.load(Config.class.getResourceAsStream("machine1.properties")); 
else 
configProps.load(Config.class.getResourceAsStream("machine2.properties")); 

Il fonctionnait en tant que Config.java et les propriétés étaient dans le même package. En plus de cela, j'ai des propriétés log4j situées à la racine du projet. Cela ne fonctionne pas non plus quand j'ai fait Jar.

Comment gérer la sutuation actuelle.Je sais mettre le fichier de propriétés en dehors du pot est une bonne idée. Comment j'accomplis cela.

Aidez-nous s'il vous plaît.

+0

Quel est l'emplacement de vos fichiers de propriétés? –

Répondre

1

Mettre le fichier de propriétés en dehors du fichier jar est seulement une bonne idée si vous avez besoin d'écrire dans ce fichier de propriétés (c'est pour la configuration). Compte tenu de votre nom, je suppose que c'est pour la configuration.

En lecture seule, votre méthode est correcte si le fichier de propriétés est correctement empaqueté dans le bocal. Est-ce? Avez-vous atteint un sommet au contenu en utilisant jar tf MyJar.jar? Est-ce qu'il montre votre fichier de propriétés au bon chemin?

Où stocker les fichiers de configuration est un problème plus large. Voici un bon article SO qui examine quelques aspects de celui-ci (à savoir pour le mettre): What is the proper way to store app's conf data in Java?

Il me semble que vous voulez choisir un emplacement (voir l'article ci-dessus). Une fois que vous avez fait cela, la première fois que l'application est exécutée, vous devez charger les propriétés par défaut de votre fichier Jar comme vous le faites, puis les enregistrer immédiatement à l'emplacement que vous avez choisi. Ensuite, et après, lisez et écrivez à cet endroit à la place. Vous devrez utiliser un FileInputStream/FileOutputStream.

0

Essayez d'ajouter un manifeste au META-INF de votre JAR avec le Class-Path défini de manière appropriée.