Je l'extrait de code de code suivant:Pourquoi ServletContext # getRealPath ("/") renvoie un chemin relatif?
String path = servletContext.getRealPath("/");
Maintenant, j'ai eu un rapport d'erreur d'un utilisateur en disant que le chemin de retour n'est pas un chemin absolu. Le chemin renvoyé est 'usr/local/...
' au lieu de '/usr/local/...'
', donc getRealPath
semble renvoyer un chemin relatif.
Je peux le voir, car le chemin retourné est enregistré dans un fichier journal.
Mes caractéristiques sont les suivantes:
- JBoss 4.0.5.GA
- Redhat EL 4
- jdk 1.5.0
Voir here pour la javadoc
Etes-vous sûr que votre enregistrement est pas seulement laisser tomber le premier caractère pour une raison quelconque? Pouvez-vous peut-être déboguer dans l'application et vérifier le résultat de cette façon? Si tout cela échoue, vous pouvez vérifier les rapports de bogue sur ce problème sur Sun. – cjstehno
Non, malheureusement pas. 1: c'est une simple instruction log: log.debug ("path:" + path); 2: Plus tard dans l'application, du code essaie de rechercher un fichier sous ce chemin: new File (servletContext.getRealPath ("/) + ...); un appel sur file.exists() renvoie false. Idée cependant, je vais vérifier les rapports de bogues –
Vous mentionnez que vous utilisez JBoss, mais quel conteneur Web? Il était livré avec Jetty par défaut, mais maintenant Tomcat je pense ... vous pouvez également vérifier dans ce problème sur le base de données de bogues et/ou des forums pour le conteneur Web que vous utilisez réellement puisque c'est leur mise en œuvre ... ne pense pas à cela plus tôt – cjstehno