JAVA probleme jar+manifest+classpath

Bonsoir,

J’ai fait un exemple avec mon problème, histoire de ne pas perdre de temps avec la lecture de mon code. Nous avons donc un .jar muni de son MANIFEST. Voici la structure du jar d’exemple :

test.jar
…|_META-INF
…|_MANIFEST.MF
…|_main
…|_test.class

Le source du test.class :


package main;
public class test {
	public static void main(String[] args){
		System.out.println("Classpath ["+System.getProperty("java.class.path")+"]");
	}
}

Le MANIFEST.MF :


Manifest-Version: 1.0
Class-Path: . ..
Main-Class: main.test

A l’exécution :


C:\Documents and Settings\st23830\Desktop>java -jar test.jar
Classpath [test.jar]

Question : pourquoi ne voit-il pas tout ce qui est définit sous “Class-Path” dans le MANIFEST.MF ? Suite à mes recherches, j’ai essayé avec un " ", un “,”, un “;” comme séparateur du Class-Path, rien y fait…

Ca me rend fou, comme d’habitude surement une connerie…

Merci si vous avez la réponse à ce problème!!

PS1 : J’ai pas mal cherché, je suis tombé sur quelques personnes qui ont le même problème, à chaque fois elles ont utilisé un échapatoire (classPath en dur, intégration du dossier visé directement dans le jar, etc…)
PS2 : mon exemple est extrêmement simplifié, le vrai soucis est que ResourceBundle.getBundle(…) ne va chercher que dans le classPath, on ne peut pas lui spécifier de path. Mais je ne veux pas mettre de chemin en dur dans le classPath, ni que les fichiers recherchés par getBundle se trouvent dans le.jar. Par contre je veux que ça marche avec un jar :wink:
PS3 : ma version de java :

C:\Documents and Settings\st23830\Desktop>java -version
java version "1.6.0_11"
Java(TM) SE Runtime Environment (build 1.6.0_11-b03)
Java HotSpot(TM) Client VM (build 11.0-b16, mixed mode, sharing)

Meci pour votre aide !
Edité le 06/01/2009 à 13:04

Re Bonjour,

Pas d’idée ? Quelqu’un a-t-il déjà utilisé des chemins relatifs pour le classpath dans le MANIFEST ?

Merci !

j’ai déjà utilisé des chemins genre lib/foobar.jar.

Me semble que dans le Manifest, c’est l’espace qui sert de séparateur (c’est débile mais bref)

Cadeau: java.sun.com…

Oui apparement c’est l’espace…

Effectivement si tu pointe directement un jar, ça roule. C’est quand je rajoute un dossier que çà ne marche pas !

Je vais finir par croire qu’on ne peut pas pointer autre chose que des .jar…

merci quand même

Et merci pour le cadeau mais j’avais déjà lu :wink:

D’ailleurs tu remarqueras que tous les exemples donnent des classpath qui pointent des .jar, mais que nul part il n’est précisé qu’on ne peut pas pointer autre chose que des jar…
Edité le 06/01/2009 à 16:02