2009-07-07 14 views
8

Je veux utiliser le ClassLoader pour charger un fichier de propriétés pour la classe Properties. J'ai simplifié le code ci-dessous pour éliminer les erreurs de manipulation aux fins de cette discussion:Comment utiliser Java ClassLoader pour charger un fichier à partir du classpath?

loader = this.getClass().getClassLoader(); 
in = loader.getResourceAsStream("theta.properties"); 
result = new Properties(); 
result.load(in); 

Dans le même répertoire que cette classe je le fichier « theta.properties » mais le InputStream est toujours nulle. Est-ce que je mets le fichier au mauvais endroit? J'utilise eclipse et son ensemble pour construire les fichiers de classe dans le dossier source - cela ne devrait donc pas poser de problème.

Je ne trouve rien dans JavaDoc pour que le ClassLoader me dise quel classpath est recherché.

Répondre

10

En utilisant getClass().getClassloader() vous recherchez "theta.properties" à partir du répertoire de chemin racine. Utilisez simplement getClass().getResourceAsStream() pour obtenir une ressource relative à cette classe.

6

Si le fichier se trouve dans le même répertoire que la classe, vous devez préfixer le package de la classe en tant que répertoire.

Donc, si votre forfait est:

package com.foo.bar; 

Ensuite, votre code est:

.getResourceAsStream("com/foo/bar/theta.properties"); 
-1

Vous pouvez utiliser ResourceBundle

Questions connexes