Comment obtenir le chemin d'accès d'un fichier JAR?

Mon code s'exécute à l'intérieur d'un fichier JAR, dire foo.jar et j'ai besoin de savoir, dans le code, dans le dossier de la course foo.jar est.

Donc, si foo.jar est dans C:\FOO\, je veux obtenir ce chemin peu importe ce que mon répertoire de travail actuel est.

Voir la réponse de Fab pour une solution qui fonctionne lorsque les chemins d'accès comprennent des espaces. Notez également que certaines réponses ci-dessous l'adresse de la question dans le titre (jar chemin), certains traitent de la question elle-même (chemin du dossier contenant jar), et certains offrent des chemins de classes à l'intérieur du fichier jar.
Méfiez-vous lors de l'utilisation de ANT! ============== J'appelle String path = SomeClass.classe.getProtectionDomain().getCodeSource().getLocation().getPath(); et d'obtenir: /C:/apache-ant-1.7.1/lib/ant.jar Pas très utile!
Intéressant. Le code d'origine dans lequel j'ai utilisé cela n'a jamais été exécuté en ant, il n'est donc pas un problème pour moi.
Fancellu, j'ai vécu exactement ce que vous avez décrit. Travaux au cours de dev, échoue lors de la construction du pot.

OriginalL'auteur Thiago Chaves | 2008-11-26