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.

OriginalL'auteur Jan Hoeve | 2009-09-10