Spécification du chemin de classe pour les classes à l'intérieur du JAR lui-même

StackOverflow https://stackoverflow.com/questions/480474

  •  20-08-2019
  •  | 
  •  

Question

Si j'ai une classe org.foobar.MyClass et que je veux le mettre dans un fichier JAR, dois-je le mettre dans le répertoire / org / foobar / du fichier JAR, ou puis-je le mettre dans / bin / org / foobar / et en quelque sorte spécifier / bin / comme classpath dans le fichier JAR lui-même?

Était-ce utile?

La solution

Comme tout le monde le fait habituellement - jusqu'à présent, je n'ai jamais vu un fichier JAR faire autre chose - consiste à placer la classe org.foobar.MyClass dans le fichier JAR dans le répertoire / org / foobar / du fichier JAR. Je ne peux pas imaginer une bonne raison de faire quelque chose de différent, car cela empêcherait toute personne de ne pas faire des choses inhabituelles.

Autres conseils

vous pouvez inclure la propriété Class-Path dans votre manifeste, en répertoriant les fichiers jar dont dépend votre application. Les chemins seront considérés par rapport à l'emplacement de votre fichier JAR exécutable.

Par exemple, si votre app.jar contient cela dans MANIFEST.MF:

Chemin de classe: lib1.jar, lib / lib2.jar

Ensuite, la machine virtuelle Java s'attend à trouver lib1.jar dans le même répertoire que app.jar et un sous-répertoire appelé lib contenant lib2.jar.

Je pense que vous pouvez y parvenir en utilisant le fichier MANIFEST. Si je me souviens bien, vous pouvez spécifier l'emplacement d'un fichier particulier dans le fichier jar.

Le nom dans le fichier jar doit correspondre au nom de la classe. Sauf si, bien sûr, vous écrivez un chargeur de classes personnalisé pour faire des choses étranges.

Vous pouvez spécifier un " répertoire " dans le fichier jar en utilisant une URL jar. Cependant, je ne pense pas que URLClassLoader gère cela correctement (non essayé).

Une fonctionnalité qui existe en standard consiste à ajouter d'autres fichiers jar dans le chemin d'accès aux classes en les spécifiant dans le manifeste.

Pourquoi feriez-vous ce dernier? Il est plus facile de le placer simplement dans le bon répertoire, en fonction du nom du paquet, ce qui vous évite de modifier le fichier MANIFEST ou de définir des paramètres spéciaux.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top