GNU/Linux >> Linux Esercitazione >  >> Linux

come ottenere il percorso relativo della directory corrente in Tomcat dall'ambiente Linux usando java

Il tuo problema è che non sai quale sia la directory "corrente". Se avvii Tomcat su Linux come servizio, la directory corrente potrebbe essere qualsiasi cosa. Quindi new File(".") ti porterà in una posizione casuale nel file system.

Utilizzando la proprietà di sistema catalina.base è molto meglio perché lo script iniziale di Tomcat catalina.sh imposterà questa proprietà. Quindi funzionerà fintanto che non proverai a eseguire la tua app su un server diverso.

Un buon codice sarebbe simile a questo:

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

InputStream inputStream = new FileInputStream( propertyFile );

Come puoi vedere, il codice non mescola stringhe e file. Un file è un file e una stringa è solo testo. Evita di utilizzare il testo per il codice.

Successivamente, utilizzo getAbsoluteFile() per assicurarmi di ottenere un percorso utile nelle eccezioni.

Assicurati inoltre che il tuo codice non ingoi eccezioni. Se avessi potuto vedere il messaggio di errore nel tuo codice, avresti visto immediatamente che il codice ha cercato di cercare nel posto sbagliato.

Infine, questo approccio è fragile. La tua app si interrompe se il percorso cambia, quando viene utilizzato un server web diverso e per molti altri casi.

Prendi in considerazione l'estensione della webapp strsproperties per accettare le richieste HTTP. In questo modo, puoi configurare la tua app per connettersi a strsproperties tramite un URL. Questo funzionerebbe per qualsiasi server web, potresti persino mettere le proprietà su un host diverso.


Se il tuo codice viene eseguito all'interno di un servlet, potrebbe essere più semplice utilizzare getServletContext().getRealPath("/strs.properties") per recuperare il percorso assoluto del file.


Linux
  1. Come ottenere la dimensione della directory in Linux

  2. Come eseguo un programma con una directory di lavoro diversa da quella corrente, dalla shell di Linux?

  3. Ottieni il file più recente in una directory su Linux

  4. Come ottenere il percorso completo di un file?

  5. Come aggiungere il file .so a java.library.path in Linux

Come ottenere la dimensione di una directory in Linux

Come ottenere notizie istantaneamente dalla riga di comando in Linux

Come ottenere il nome del file dal percorso completo in Linux

Come rimuovere (^M) caratteri da un file in Linux

Come copiare un file da un'altra directory a quella corrente?

Come installare Java 8 JRE e JDK dal file RPM su Linux