Maison  >  Article  >  Java  >  Obtenir le chemin JAVA, y compris une explication détaillée des chemins en dehors de CLASSPATH

Obtenir le chemin JAVA, y compris une explication détaillée des chemins en dehors de CLASSPATH

Y2J
Y2Joriginal
2017-04-27 09:23:131880parcourir

Cet article est une analyse détaillée et une introduction à la méthode d'obtention du chemin JAVA, y compris les chemins autres que CLASSPATH. Les amis dans le besoin peuvent se référer à

pour résumer certaines méthodes d'obtention du chemin JAVA. en ligne :
Remarque : si vous démarrez le programme à partir de ANT, la sortie de this.getClass().getResource("") est étrange. Vous pouvez le déboguer avec succès directement avec la ligne de commande JAVA.
Quelques méthodes pour obtenir le chemin de classe et le chemin absolu de la classe actuelle
Méthodes pour obtenir le chemin en dehors de CLASSPATH :

URL base = this.getClass().getResource(""); //先获得本类的所在位置,如/home/popeye/testjava/build/classes/net/ String path = new File(base.getFile(), "……/……/……/"+name).getCanonicalPath(); //就可以得到/home/popeye/testjava/name

Voici quelques-unes méthodes pour obtenir le chemin de classe et la classe actuelle Quelques méthodes de chemins absolus de classes. Vous devrez peut-être utiliser certaines de ces méthodes pour obtenir le chemin absolu vers la ressource dont vous avez besoin.

1.FileTest.class.getResource("")

Par exemple : file:/D:/java/eclipse32/workspace/jbpmtest3/bin/com/test/

2.FileTest.class.getResource("/")

Ce que vous obtenez est le chemin actuel de l'URI absolu du chemin de classe.
Par exemple : file:/D:/java/eclipse32/workspace/jbpmtest3/bin/

3.Thread.currentThread().getContextClassLoader().getResource("")

L'obtenu est également le chemin URI absolu du ClassPath actuel.
Par exemple : file:/D:/java/eclipse32/workspace/jbpmtest3/bin/

4.FileTest.class.getClassLoader().getResource("")

L'obtenu est également le chemin URI absolu du ClassPath actuel.
Par exemple : file:/D:/java/eclipse32/workspace/jbpmtest3/bin/

5.ClassLoader.getSystemResource("")

L'obtenu est également le chemin URI absolu du ClassPath actuel.
Par exemple : file:/D:/java/eclipse32/workspace/jbpmtest3/bin/
Je recommande d'utiliser Thread.currentThread().getContextClassLoader().getResource("") pour obtenir le chemin absolu du notation URI actuelle du chemin de classe.
Dans les applications web, on obtient généralement le chemin absolu du répertoire racine de l'application web via la méthode ServletContext.getRealPath ("/"). De cette façon, il suffit de fournir le chemin relatif au répertoire racine de l'application Web pour construire un chemin absolu pour localiser la ressource.
Remarques :
1. Essayez de ne pas utiliser de chemins relatifs par rapport au répertoire utilisateur actuel de System.getProperty ("user.dir"). Il s’agit d’une bombe à retardement qui pourrait vous tuer à tout moment.
2. Essayez d'utiliser des ressources de chemin absolu sous forme d'URI. Il peut être facilement converti en objets URI, URL et File.
3. Essayez d'utiliser des chemins relatifs par rapport au chemin de classe. N'utilisez pas de chemins absolus. À l’aide de la méthode d’URL statique publique getExtendResource(String relativePath) de la classe ClassLoaderUtil ci-dessus, vous pouvez déjà localiser des ressources à tous les emplacements à l’aide de chemins relatifs par rapport au chemin de classe.
4. N'utilisez jamais de chemins absolus codés en dur. Parce que nous pouvons utiliser la méthode getResource("") de la classe ClassLoader pour obtenir le chemin absolu du chemin de classe actuel.
L'utilisation de chemins absolus codés en dur est totalement inutile ! Cela rendra certainement votre mort moche ! Le programme ne sera pas portable !
Si vous devez spécifier un chemin absolu, alors utiliser un fichier de configuration est bien mieux que coder en dur !
Bien sûr, je vous recommande quand même d'utiliser un programme pour obtenir le chemin absolu du classpath pour épeler le chemin absolu de la ressource

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn