GNU/Linux >> Znalost Linux >  >> Linux

jak získat relativní cestu aktuálního adresáře v tomcat z prostředí linux pomocí javy

Váš problém je, že nevíte, co je to "aktuální" adresář. Pokud spustíte Tomcat v Linuxu jako službu, aktuální adresář může být jakýkoli. Takže new File(".") vám získá náhodné místo v systému souborů.

Pomocí systémové vlastnosti catalina.base je mnohem lepší, protože spouštěcí skript Tomcatu catalina.sh nastaví tuto vlastnost. Bude to tedy fungovat, pokud se nepokusíte spustit aplikaci na jiném serveru.

Dobrý kód by vypadal takto:

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

InputStream inputStream = new FileInputStream( propertyFile );

Jak vidíte, kód nemíchá řetězce a soubory. Soubor je soubor a řetězec je pouze text. Nepoužívejte pro kód text.

Dále používám getAbsoluteFile() abych se ujistil, že dostanu užitečnou cestu ve výjimkách.

Také se ujistěte, že váš kód nepolyká výjimky. Pokud byste ve svém kódu viděli chybovou zprávu, okamžitě byste viděli, že se kód pokusil hledat na nesprávném místě.

V neposlední řadě je tento přístup křehký. Vaše aplikace se přeruší, pokud se změní cesta, při použití jiného webového serveru a v mnoha dalších případech.

Zvažte rozšíření webové aplikace strsproperties přijímat požadavky HTTP. Tímto způsobem můžete nakonfigurovat svou aplikaci tak, aby se připojovala k strsproperties prostřednictvím adresy URL. To by fungovalo pro jakýkoli webový server, dokonce byste mohli umístit vlastnosti na jiného hostitele.


Pokud váš kód běží uvnitř servletu, může být jednodušší použít getServletContext().getRealPath("/strs.properties") k načtení absolutní cesty k souboru.


Linux
  1. Jak získat velikost adresáře v Linuxu

  2. Získejte nejnovější soubor v adresáři v systému Linux

  3. Jak získat úplnou cestu k souboru?

  1. Jak získat cestu k aktuálnímu souboru (pwd) v Linuxu z C?

  2. Jak získat název hostitele z IP (Linux)?

  3. Jak zkopíruji soubor/složku z domovského adresáře jiného uživatele v Linuxu?

  1. Jak spustím program s jiným pracovním adresářem, než je aktuální, z prostředí Linux?

  2. Jak získat masku sítě z bash?

  3. Jak zkopírovat cestu k adresáři pro zachování souboru v Linuxu?