GNU/Linux >> Tutoriels Linux >  >> Linux

comment obtenir le chemin relatif du répertoire actuel dans tomcat à partir de l'environnement linux en utilisant java

Votre problème est que vous ne savez pas quel est le répertoire "courant". Si vous démarrez Tomcat sous Linux en tant que service, le répertoire actuel peut être n'importe quoi. Donc new File(".") vous obtiendra une place aléatoire dans le système de fichiers.

Utilisation de la propriété système catalina.base est bien meilleur car le script de démarrage de Tomcat catalina.sh définira cette propriété. Cela fonctionnera donc tant que vous n'essayez pas d'exécuter votre application sur un autre serveur.

Un bon code ressemblerait à ceci :

File catalinaBase = new File( System.getProperty( "catalina.base" ) ).getAbsoluteFile();
File propertyFile = new File( catalinaBase, "webapps/strsproperties/strs.properties" );

InputStream inputStream = new FileInputStream( propertyFile );

Comme vous pouvez le voir, le code ne mélange pas les chaînes et les fichiers. Un fichier est un fichier et une chaîne n'est que du texte. Évitez d'utiliser du texte pour le code.

Ensuite, j'utilise getAbsoluteFile() pour m'assurer d'obtenir un chemin utile dans les exceptions.

Assurez-vous également que votre code n'avale pas d'exceptions. Si vous aviez pu voir le message d'erreur dans votre code, vous auriez vu instantanément que le code essayait de chercher au mauvais endroit.

Enfin, cette approche est fragile. Votre application s'interrompt si le chemin change, lorsqu'un serveur Web différent est utilisé et dans de nombreux autres cas.

Envisagez d'étendre l'application Web strsproperties pour accepter les requêtes HTTP. De cette façon, vous pouvez configurer votre application pour qu'elle se connecte à strsproperties via une URL. Cela fonctionnerait pour n'importe quel serveur Web, vous pourriez même mettre les propriétés sur un autre hôte.


Si votre code s'exécute à l'intérieur d'un servlet, il peut être plus simple d'utiliser getServletContext().getRealPath("/strs.properties") pour récupérer le chemin absolu du fichier.


Linux
  1. Comment exécuter un programme avec un répertoire de travail différent de l'actuel, à partir du shell Linux ?

  2. Obtenir le fichier le plus récent dans un répertoire sous Linux

  3. Comment obtenir le chemin complet d'un fichier ?

  4. Comment obtenir le nom d'hôte de l'IP (Linux) ?

  5. Comment sortir ma clé Windows 8+ embarquée d'un environnement Linux ?

Comment obtenir la taille d'un répertoire sous Linux

Comment obtenir des nouvelles instantanément à partir de la ligne de commande sous Linux

Comment obtenir le nom de fichier à partir du chemin complet sous Linux

Comment supprimer les caractères (^M) d'un fichier sous Linux

Comment copier un fichier d'un autre répertoire vers celui en cours ?

Comment installer Java 8 JRE et JDK à partir du fichier RPM sous Linux