externe pot lors de l'exécution de java-jar
De mes lectures, lorsque vous exécutez une commande comme suit:
java -jar foo.jar
Ensuite les principales classpath est ignoré, et le chemin de la classe est prise à partir du fichier manifest.
Plus loin, le chemin de la classe déclarée sur la ligne de commande est également ignoré. Ainsi, dans:
java -classpath /usr/local/jar/foobar.jar -jar foo.jar
/usr/local/jar/foobar.jar est ignoré.
Enfin, j'ai lu que le fichier manifeste ne peut contenir que des chemins relatifs, dans le fichier jar.
Alors, comment faites-vous d'inclure des chemins absolus externes pots, qui sont présents sur le système, mais pas dans le fichier jar être exécuté?
- "Remarque: Le Chemin de Classe d'en-tête de points pour les classes ou les fichiers JAR sur le réseau local, pas les fichiers JAR dans le fichier JAR ou classes accessibles sur les protocoles de l'Internet. Pour charger les classes dans des fichiers JAR dans un fichier JAR dans le chemin de classe, vous devez écrire du code personnalisé pour charger les classes. Par exemple, si MyJar.jar contient un autre fichier JAR appelé MyUtils.jar vous ne pouvez pas utiliser le Chemin de Classe d'en-tête dans MyJar.jar s'manifeste pour charger des classes MyUtils.jar dans le chemin de classe." Source: docs.oracle.com/javase/tutorial/deployment/jar/downman.html
Vous devez vous connecter pour publier un commentaire.
Est-il une raison pourquoi vous êtes en évitant l'invocation de la classe principale comme
?
Ce type d'invocation permet de mélanger des chemins absolus avec des chemins relatifs. Mettre dans un script shell ou un fichier de commandes pour éviter d'avoir à taper ou de se rappeler le plein classpath pour simplifier les choses.
-jar
peut être beaucoup plus facile dans certains scénarios, mais si vous trouvez que la procédure simplifiée de l'option est de vous donner difficulté, puis il fait toujours sens pour revenir à l'option qui vous donne un contrôle totalVous pouvez créer un dossier, dire lib dans le dossier où vous avez le fichier jar.
Manifeste.MF contenu peut être:
Contenu du dossier:
À exécuter:
Class-Path
pour un pot à l'intérieur du pot, je veux compiler?