2010-10-25 6 views
0

J'ai un fichier jar appelé "a.jar" qui a un autre fichier jar appelé "b.jar".comment exécuter une classe dans le fichier jar qui se trouve dans le chemin de classe d'un autre fichier jar

a.jar 
| 
|-- META-INF 
|  | 
|  |-- MANIFEST.MF 
| 
|-- b.jar 
    | 
    |- com/test/MainInB.class 

"b.jar" contient un fichier com/test/MainInB.class. (Classe MainInB juste imprimer "Bonjour tout le monde!")

"a.jar" a le MANIFES.MF comme ceci:

Manifest-version: 1.0 
Main-Class: com.test.MainInB 
Class-Path: b.jar 

(Le fichier manifeste ne se termine avec une nouvelle ligne vide)


Et je voudrais lancer le a.jar comme ça afin qu'il imprime "Bonjour tout le monde!"

java jar a.jar

Mais je me suis NoClassDefFoundError!

Aidez-nous! Est-ce que ce n'est pas autorisé? Ou est-ce que je manque quelque chose?

R Joe

+1

Je pense qu'il n'y a pas de moyen direct de le faire. Jetez un oeil à http://one-jar.sourceforge.net/ –

+0

Notez que le classpath de a.jar spécifie que b.jar est adjacent à a.jar. (C'est-à-dire que vous devez trouver un fichier appelé b.jar dans le même répertoire que a.jar) – user268396

Répondre

0

En fait, mon exemple fonctionne!

J'ai juste un problème avec mon projet dans lequel j'utilise maven-assembly-plugin pour créer jar et MANIFEST.MF.

Quelque chose doit être désactivé dans la configuration ou le plug-in.

Merci quand même les gars!

Joe

+0

Désolé les gars .. Ignorez ma réponse ci-dessus. Ce n'était pas correct. Je pense qu'il est illégal d'essayer d'exécuter un fichier de classe qui se trouve dans le fichier jar d'un autre fichier jar. – joe

0

Java ont un problème, il ne peut pas lire les bocaux à l'intérieur du fichier jar.

Ils l'ont considéré pour la future version. Mais pas encore fixé jusqu'à maintenant voir BUG.

Vous devez les conserver à nouveau

Questions connexes