j'ai été confronté avec le code qui essaie de lire des fichiers de configuration à partir du même répertoire dans lequel le fichier .class pour la classe elle-même est:Obtenir le chemin vers le répertoire d'un fichier de classe donnée
File[] configFiles = new File(
this.getClass().getResource(".").getPath()).listFiles(new FilenameFilter() {
public boolean accept(File dir, String name) {
return name.endsWith(".xml");
}
});
Apparemment, ce fonctionne dans certains cas (lors de l'exécution du code dans Resin, peut-être), mais pour moi, en cours d'exécution Tomcat, il échoue simplement avec NPE, car getClass().getResource(".")
renvoie null
. Un collègue a suggéré de créer un autre fichier de configuration contenant une liste de tous les fichiers de configuration ".xml" (ce qui fonctionnerait bien ici car il reste assez statique), et que vous ne devriez pas vraiment essayer de faire quelque chose comme ça dans Java.
Encore, je me demande s'il y a une certaine manière de manière sympa, qui fonctionne universellement, pour obtenir le chemin d'accès au répertoire où se trouve un fichier .class donné? Je suppose que vous pourriez l'obtenir à partir du chemin du fichier .class se présente comme suit:
new File(this.getClass().getResource("MyClass.class").getPath()).getParent()
... mais est-ce la seule/manière la plus propre?
Modifier: Pour clarifier, supposons que nous savons ceci est utilisé dans une application déployée de telle sorte que MyClass.class sera toujours lu à partir d'un fichier .class sur le disque et les ressources seront là en ce même répertoire.
cette question connexe trouvé: http://stackoverflow.com/questions/778187/getting-directory-path-to-class-file-containing-main Sa réponse acceptée utilise essentiellement ce que je suggérais [getResource ("MyClass.class"). GetPath()] ... mais il ne répond pas directement si c'est le seul ou le meilleur moyen. – Jonik