Comment puis-je spécifier les dépendances dans le fichier de manifeste, puis de l'inclure dans mon .fichier jar?
J'ai généré .classe les fichiers par la commande suivante:
javac -cp \directoryName\external.jar myPackageDirectory\First.java myPackageDirectory\Second.java
J'avais besoin d'utiliser -cp
lors de la compilation et de la nom de .fichier jar d'un "externe" de la bibliothèque (external.jar pour pouvoir utiliser cette bibliothèque à partir de mon code.
À l'aide de mon .les fichiers de classe j'ai généré mon .jar fichier de la manière suivante:
jar cfm app.jar manifest.txt myPackageDirectory\*.class
manifest.txt
contient qu'une seule ligne:
Main-Class: myPackageName.First
Mon problème est que je ne suis pas sûr que je vais être en mesure d'exécuter mon .fichier jar sur d'autres ordinateurs. Je pense que oui, car lors de la compilation j'ai spécifié l'emplacement de l' .jar fichier de la bibliothèque externe. Donc, mon .les fichiers de classe (inclus dans le .fichier jar vais essayer de trouver le .jar fichier de la bibliothèque externe dans un répertoire spécifique et il n'est pas garanti que les que les .jar fichier de la bibliothèque externe sera dans le même répertoire que sur mon ordinateur.
J'ai entendu dire que le problème peut être résolu par un
l'utilisation d'un fichier MANIFESTE que je
inclure dans mon bocal, et qui
liste de dépendance endroits
mais je ne comprends pas comment il fonctionne. J'ai besoin de spécifier la localisation de l' "external.jar" lors de la phase de compilation (sinon le compilateur se plaint).
Vous devez vous connecter pour publier un commentaire.
Tout d'abord: vous ne semblez pas à compiler une classe appelée
MainClass
et tous vos .fichiers java semble être dans un paquet, donc je suppose que c'MainClass
est juste un espace réservé et que vous utilisez le bon nom de la classe ici.Vous devez spécifiez un
Class-Path
de l'en-tête qui mentionne votre externe .le pot à votremanifest.txt
et de livrer les .fichier jar avec votre pot. Vous devez pour ce faire en outre à la spécification de la-cp
au moment de la compilation.MainClass
(c'est juste une place de titulaire, je l'ai modifié que dans mon post). Quant à la seconde partie, comment dois-je inclure mon fichier manifeste dans mon .fichier jar?manifest.txt
). Vous avez juste besoin de modifier son entrée. Le reste devrait être expliqué dans le tutoriel, j'ai un lien.m
argument avecmanifest.txt
ditjar
d'utiliser le contenu demanifest.txt
une écriture à la nouvelle .les fichiers jarMETA-INF/MANIFEST.MF
.En outre à ce que Joachim Sauer (très bien) dit, il y a une façon d'emballer vos dépendance bocaux dans le même pot que votre propre code. Les programmes qui permettent d'atteindre cette de créer un super-classe principale et de manipuler le classpath pour trouver l'dépendante des pots dans votre bocal.
Plusieurs programmes peuvent le faire; l'un d'eux est appelé OneJar.