Je construis un WAR/EAR et un de mes composants lit dans de nombreux fichiers de configuration personnalisée à l'aide de fichiers IO:Comment ouvrir un fichier de ressources dans un fichier WAR en utilisant un chemin d'accès?
Reader reader = new BufferedReader(new FileReader(path));
Le chemin ci-dessus est une chaîne qui est passé comme une propriété à cette classe par printemps fichier ApplicationContext.xml.
Quelle chaîne de caractères dois-je spécifier si je veux mettre tous ces fichiers de configuration dans un fichier WAR? Est-ce faisable? Ou est le composant incorrect et devrait utiliser getResourceAsStream()
à la place? J'ai parcouru et trouvé beaucoup d'informations sur getResource()
et URI. Cependant, je n'ai pas pu trouver s'il est possible de créer le bon chemin de fichier vers une ressource à l'intérieur applicationContext.xml
Le fait d'avoir des ressources de fichiers dans votre chemin de classe facilite l'accès. Mais il existe une autre possibilité, comme décrit dans la réponse à cette [question] (http://stackoverflow.com/questions/9618483/relative-views-in-view-states-within-a-flow-that-is-loaded- from-a-jar-file). L '[API servlet] (https://tomcat.apache.org/tomcat-7.0-doc/servletapi/javax/servlet/ServletContext.html#getResource (java.lang.String)) décrit où ces ressources doivent être localisées. Fondamentalement votre WAR devrait contenir un dossier ** META-INF/resources **, où vos fichiers, qui ne devraient pas être dans le classpath, doivent être placés. – Markus
Cette réponse ne fonctionne pas pour moi. Je reçois un 'IOException' parce que le fichier est introuvable. En outre, j'ai vu le commentaire suivant: «Par défaut, les classes du package java.io résolvent toujours les chemins d'accès relatifs par rapport au répertoire utilisateur en cours.Ce répertoire est nommé par la propriété système user.dir et est généralement le répertoire dans lequel Java machine virtuelle a été appelée. " à [java.io.File javadoc] (http://docs.oracle.com/javase/6/docs/api/java/io/File.html) –
Selon le printemps, vous devez spécifier la ressource en utilisant "classpath: MyResource.properties ". Vous pouvez trouver la référence ici http://static.springsource.org/spring/docs/2.0.x/reference/resources.html – uaarkoti