2011-02-04 2 views
2

dernièrement j'ai été un peu confus concernant les chemins de classes dans les fichiers Manifest.mf. Donc, ce que je veux, c'est externaliser certaines propriétés.files de ma distribution.jar et les mettre à côté sans changer les fichiers java-source.Que signifie un seul point (".") Dans Distribution Manifest.mf?

exemple suivant: En ce moment je peux ouvrir un fichier des propriétés comme ceci:

this.getClass().getClassLoader().getRessourceAsStream("/config/jdbc.properties"); 

Les jdbc.properties sont situés dans une sourcefolder éclipse appelée « ressources » avec un package nommé « config ». Maintenant, quand je construis la distribution, je les externalise dans un dossier à côté de la distribution.jar, mais je vais toujours les trouver sans changer le code source affiché.

seulement generell solution qui a fonctionné jusqu'à présent (sans absolout pathes) était la manifest.mf suivante:

Manifest-Version: 1.0 
Ant-Version: Apache Ant 1.7.1 
Created-By: 17.1-b03 (Sun Microsystems Inc.) 
Main-Class: com.ymene.Main 
Class-Path: . 

Le "" dans Class-Path semble pointer sur la racine du fichier .jar? Je ne l'ai jamais vu comme ça dans les fichiers manifestes. Donc, je me demande, si c'est la bonne approche pour réaliser mon souhait de ne pas changer du tout mon code source, peu importe si la ressource sera construite dans ou hors du pot tant que le chemin sera le même.

Quelqu'un peut-il me dire, si le "." dans le fichier manifest.fm aura des effets secondaires indésirables pour moi? Et si ce n'est pas le cas, est-il possible de générer cette entrée Manifest.mf Class-Path (le "." Je veux dire) avec Ant? Ou y a-t-il une autre solution pour y parvenir?

Merci à l'avance pour toute aide sur ce sujet, ymene

Répondre

4

Le point unique signifie « ce répertoire ».

+0

Et "ce répertoire" dans ce cas particulier signifie le répertoire du fichier manifest.mf dans le fichier .jar? Ce serait un peu confus pour moi, puisque les chemins ne devraient pas fonctionner du tout alors, ou y a-t-il encore une partie qui me manque? – crusam

+1

Non, cela signifie le chemin où le fichier jar est placé. Si vous utilisez des bibliothèques dans un sous-répertoire comme "lib /", vous devez mentionner chaque fichier jar dans la section class-path du manifeste. – Matten

Questions connexes