Pourquoi serait-chargeur de classe.getResourceAsStream() retourne la valeur null?

Ayant le code suivant cassé volontairement afin d'identifier la source d'un NullPointerException dans quelque chose qu'il aurait été très simple mais qui est en fait qui me conduira à la noix:

Properties properties = new Properties();
Thread currentThread = Thread.currentThread();
ClassLoader contextClassLoader = currentThread.getContextClassLoader();
InputStream propertiesStream = contextClassLoader.getResourceAsStream("resource.properties");
if (propertiesStream != null) {
  properties.load(propertiesStream);
  //TODO close the stream
} else {
  //Properties file not found!
}

- Je obtenir le "fichier des Propriétés non trouvé!" erreur, c'est à dire contextClassLoader.getResourceAsStream("des ressources.les propriétés"); retourne null.

C'est un CXF base de client et j'ai vérifié que la "ressource."propriétés de fichier est dans le répertoire courant dans lequel le client du pot de résidence (et court).

J'ai aussi vérifié le chemin d'accès absolu en incluant les éléments suivants de code de diagnostic:

            File file = new File("resource.properties");
            System.out.println(file.getAbsolutePath());

Le chemin absolu de points à l'endroit où le client est tapissé de.

J'ai aussi essayé de trouver le contexte de la classe de chargement, à l'aide de:

  System.out.println(Thread.currentThread().getContextClassLoader());

mais au lieu de cela quelques structure de répertoire comme démontré ici, tout ce que j'obtiens est:

com.simontuffs.onejar.JarClassLoader@1decdec

Pourquoi chargeur de classe.getResourceAsStream() retourne la valeur null?

Ce qui me manque?

Parce que le nom de la ressource n'est pas disponible via le chemin de la classe.
Qui CLASSPATH? J'ai imprimé le classpath env var et il comprend le répertoire courant ("."). Je suis confus.

OriginalL'auteur Withheld | 2014-04-09