2010-09-23 6 views
1

Je tente de créer un fichier JAR basé sur deux packages Java distincts. Je peux compiler et exécuter dans Eclipse, mais je ne peux pas obtenir le code pour fonctionner à partir de la ligne de commande. J'ai Ant et le JDK correctement configuré pour l'utilisation, car j'ai un script de construction Ant qui fonctionne presque. Le seul problème est que le fichier JAR résultant génère une erreur ClassNotFoundException lorsque j'essaie de l'exécuter.JAR de construction Ant à partir de plusieurs packages

L'archive contient tous les .class fichiers des deux paquets dans la hiérarchie de répertoire. Peu importe, le JAR va jeter l'exception mentionnée ci-dessus.

L'idée est d'exécuter ce script à partir du répertoire de niveau supérieur qui contient les deux packages.

Voici les lignes pertinentes de mon script de construction:

<manifest file="MANIFEST.MF"> 
    <attribute name="Built-By" value="XBigTK13X"/> 
    <attribute name="Main-Class" value="com.main.MainClass"/> 
    <attribute name="Class-Path" value="./com/main/ ./secondpackage/shapes/" /> 
</manifest> 
<jar destfile="App.jar" 
    basedir="./bin" 
    includes="**/*.class" 
    manifest="MANIFEST.MF" 
    excludes="App.jar" 
/> 
+0

à quoi ressemble le fichier jar -tvf jarfile.name? – Jayan

Répondre

1

Le JAR était correct tout le temps. Cette erreur a été lancée parce que je tentais d'exécuter le JAR avec la commande suivante après la création d'un fichier JAR:

java MainClass 

Je me rends compte maintenant que je dois cibler explicitement le JAR en utilisant la commande suivante:

java -jar MainClass.jar 
0

Regardez dans le fichier JAR résultant pour vous assurer que les deux paquets ont le bon chemin de la racine. Votre instruction de chemin de classe dans le manifeste peut ne pas correspondre à la structure des dossiers contenant les fichiers .class.

Vérifiez-le en ouvrant le fichier JAR avec un utilitaire zip.

+0

Ils sont en effet situés dans la bonne structure de répertoires. – XBigTK13X

+1

Quel paquet est chargé correctement, principal ou secondpackage? Je me demande si le séparateur de votre chemin de classe doit être un point-virgule:

+0

Modification de l'espace séparateur en un point-virgule n'a pas résolu le problème. Voici le message d'erreur généré lors de la tentative d'exécution du fichier JAR: Causé par: java.lang.ClassNotFoundException: MainClass.jar – XBigTK13X

Questions connexes