J'essaie de définir un manifeste de pot afin qu'il charge toutes les bibliothèques (pots) dans un dossier à côté du pot.
Le manifeste ressemble à ceci: p> La mise en page est la suivante: p> et j'essaie de courir comme ceci: p> et Je reçois des erreurs de noclassdéfinition sur les classes du bocal dans le dossier. P> Si quelqu'un est curieux, ce dossier peut contenir des pots optionnels traités lors du chargement de la classe. Ça 'Swhy, je ne peux pas utiliser les codés ou autogénérées. P> aucune idée? P> Mise à jour forte>
Repéra la question comme cela n'est pas possible actuellement du manifeste lui-même. La réponse était la seule réellement viable sans avoir besoin d'extraire des pots, bien qu'elle fonctionne aussi. P> Ainsi, comme un résumé La réponse est non, cela ne peut pas être effectué à partir du fichier manifeste seul si vous n'avez pas spécifié dépendances. p> p>
3 Réponses :
Java ne connaît pas les fichiers JAR dans le répertoire LIBS. Si vous utilisez Java 1.6+, vous pouvez exécuter un programme comme p>
java -cp lib / * -jar myjar.jar p>
N'a pas fonctionné comme écrit. Devait faire ceci: Java -CP libs / -jar myjar.jar. Malheureusement, ce n'est pas ce que j'ai demandé car j'essaye de voir si c'est possible du manifeste.
J'ai fini par utiliser une version de cela pour le faire fonctionner: java -cp libs / * chemin.to.my.class.main
Question mise à jour pour accueillir ceci comme seule réponse valide.
Java n'autorise pas les deux -cp code> et
-jar code> drapeaux: Stackoverflow.com/questions/15930782/...
Vous devez définir votre manifeste classpath comme Voir la documentation Oracle pour plus de détails https://docs.oracle.com/javase/tutorial/deployment/jar/downman.html p> p>
Cela ne fonctionne que si vous savez avoir avant de remettre les pots que le dossier aura. Ceci est destiné aux pots facultatifs que l'application détecte lorsqu'il est dans la classe de classe.
Avez-vous essayé de la classe de classe: libs / *. Jar?
Apparemment, l'entrée de parcours dans le fichier manifeste n'a pas pris en charge les caractères génériques
Essayez d'extraire ces pots. On dirait que vous ne pouvez pas ajouter tous les bocaux du répertoire, mais vous pouvez ajouter toutes les classes. Vous perdez évidemment toute la configuration dans Manifest, cependant, si vous êtes intéressé par le contenu du code de pots, cela pourrait fonctionner.
J'ai testé avec ces classes simples p> Maintenant, j'essaie de séparer les classes. Je les ai jetés dans p> pas de chemin de classe dans n'importe quel manifeste. Je peux courir un avec mon arbre de répertoire ressemble à p> maintenant j'essaie JAR P> java -cp libb.jar: liba.jar a code>. Maintenant, je crée un autre pot avec le jeu de parcours de classe sur
lib / code> p>
$ java -jar empty.jar
pkg.B
Cela ne fonctionnera tout simplement pas pour mon scénario car les utilisateurs non techniques ne pourront pas le faire. Leur demandant de mettre des pots dans un répertoire est assez difficile. Merci
La classe de classe d'Afik Jar commence à la racine du fichier code> jar code>. Vous ne pouvez pas mettre des cours ou des pots dans des sous-répertoires, à moins que vous ne les chargez de manière dynamique comme
démarrage code> ou
OSGI code> des conteneurs.
S'avère, cela peut être fait, vous devez spécifier un chemin avec le nom du jar. Vérifiez ce lien aujourd'huiguesswhat.blogspot.com / 2011/03 / ...
J'ai couru sur ce lien plus tôt et mon manifeste ci-dessus est basé sur cela, mais cela ne fonctionne pas. Il ne trouve que les fichiers de ce dossier défini dans la classe de classe. Le dossier seul ne semble pas fonctionner. (c'est-à-dire libs / ou ./libs/)
Selon le lien
de la classe de classe :./libs/lib1.jar code> devrait fonctionner.
Oui, mais je ne connais pas les dépendances avant la main. Je voudrais utiliser tous les bocaux là-bas sans avoir besoin de savoir avant la main. Est pour un système de plug-in.