Pourquoi ne ServletContext#getRealPath(“/”) renvoie un chemin relatif?
J'ai l'extrait de code suivant:
String path = servletContext.getRealPath("/");
Maintenant j'ai un rapport de bogue à partir d'un utilisateur en disant que le retour de chemin n'est pas un chemin absolu.
Le retour de chemin d'accès est " usr/local/...
' au lieu de '/usr/local/...'
, donc getRealPath
semble être de retour d'un chemin d'accès relatif.
Je peux voir cela, parce que le retour de chemin d'accès est enregistré dans un fichier de log.
Mes specs sont:
- JBoss 4.0.5.GA
- Redhat EL 4
- jdk 1.5.0
Voir ici pour la javadoc
Êtes-vous sûr que votre enregistrement n'est pas juste de laisser tomber le premier char pour une raison quelconque? Pouvez-vous peut-être de débogage dans l'application et vérifier le résultat de cette façon? Si tout cela échoue, vous pouvez vérifier les rapports de bug sur cette question au Soleil.
Non, malheureusement pas. 1: c'est une simple instruction de journal: journal.debug("path:" + path); 2: plus Tard dans l'application du code tente de rechercher un fichier dans ce chemin d'accès: nouveau Fichier(servletContext.getRealPath("/) + ...); un appel sur fichier.exists() renvoie la valeur false. Bonne idée, je vais vérifier les rapports de bogue.
Vous mentionnez que vous êtes à l'aide de JBoss, mais qui conteneur web? Il avait Jetée par défaut, mais maintenant, Tomcat, je pense que... vous pourriez aussi vérifier sur cette question sur la 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... il n'a pas penser plus tôt.
Non, malheureusement pas. 1: c'est une simple instruction de journal: journal.debug("path:" + path); 2: plus Tard dans l'application du code tente de rechercher un fichier dans ce chemin d'accès: nouveau Fichier(servletContext.getRealPath("/) + ...); un appel sur fichier.exists() renvoie la valeur false. Bonne idée, je vais vérifier les rapports de bogue.
Vous mentionnez que vous êtes à l'aide de JBoss, mais qui conteneur web? Il avait Jetée par défaut, mais maintenant, Tomcat, je pense que... vous pourriez aussi vérifier sur cette question sur la 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... il n'a pas penser plus tôt.
OriginalL'auteur Jan Hoeve | 2009-09-10
Vous devez vous connecter pour publier un commentaire.
Quelque chose comme
devrait résoudre votre problème. (Il ne répond pas à votre Question si...;-) )
Ce Qui Concerne, Jan
Avez-vous l'essayer? Il sera de retour absolu du fichier (Il n'sur mon mac avec ponton de l'exécution comme un conteneur de servlet) 😉
Qui remonte à mon commentaire sur la question... je me demande si c'est une question de mise en œuvre car vous avez juste testé dans la Jetée et JBoss utilise Tomcat, je crois. Les docs et spec-dire, il doit travailler, mais ils ont à mettre en œuvre correctement 🙂
Aussi loin que je me souviens de Jboss utilise tomcat par défaut comme c'est webcontainer. Vous pouvez le configurer pour l'utilisation de la Jetée. Ou juste essayer avec "new File("/").getAbsoluteFilePath() comme une solution de repli. 😉
OriginalL'auteur Jan