2013-07-24 3 views
0

J'ai un fichier de classe qui étend le TagSupport, ici je veux lire un fichier de propriétés, mais cela ne fonctionne pas. Je pense que getResourceAsStream renvoie null. J'utilise des fichiers de guerre éclatés sur les systèmes Bith.getResourceAsStream retourne null avec TagSupport

code:

MyTag public class étend TagSupport {

private int getUsers() { 

    ServletContext servletContext = pageContext.getServletContext(); 

    InputStream in = pageContext.getServletContext().getResourceAsStream("/WEB-INF/app.properties"); 

    Properties properties = new Properties(); 
    properties.load(in); 
    int users= Integer.parseInt(properties.getProperty("users")); 

    return users; } 

}

Ce code fonctionne sur mon pc, mais ne marche pas travailler le système de test. Je reçois l'exception suivante:

java.lang.NullPointerException erreur [STDERR] à java.util.Properties $ LineReader.readLine (Properties.java:418) ERREUR [STDERR] à java.util.Properties .load0 (Properties.java:337) erreur [STDERR] à java.util.Properties.load (Properties.java:325)

Répondre

1

Pourquoi votre app.properties résident dans /WEB-INF? Si cela aurait été /WEB-INF/classes, vous pouvez simplement appeler getResourceAsStream("/app.properties"). Cela est dû au fait que l'argument getResourceAsStream(...) est résolu par rapport au chemin de classe.

+0

c'est autre chose, je pense. Mais pourquoi ça marche sur le système de développement et pas sur le test? – JazB

+0

Difficile à dire sans rien savoir sur les deux systèmes (OS, version JDK, serveur d'application, etc.). Mais d'une manière générale, les fichiers de propriétés et autres ressources sont placés dans '/ WEB-INF/classes'. – mthmulders

+0

Merci. Il y a donc quelque chose qui ne va pas avec mon code. Avec getServletContext, il vous permet de charger des ressources par rapport à la racine de contexte. – JazB