GNU/Linux >> Linux の 問題 >  >> Linux

Javaを使用してLinux環境からTomcatの現在のディレクトリの相対パスを取得する方法

あなたの問題は、「現在の」ディレクトリが何であるかがわからないことです。 Linux で Tomcat をサービスとして起動する場合、現在のディレクトリは何でもかまいません。だから new File(".") ファイル システム内のランダムな場所を取得します。

システム プロパティ catalina.base の使用 Tomcat の起動スクリプト catalina.sh のため、はるかに優れています。 このプロパティを設定します。したがって、別のサーバーでアプリを実行しようとしない限り、これは機能します。

適切なコードは次のようになります:

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

InputStream inputStream = new FileInputStream( propertyFile );

ご覧のとおり、コードには文字列とファイルが混在していません。ファイルはファイルであり、文字列は単なるテキストです。コードにテキストを使用しないでください。

次に、 getAbsoluteFile() を使用しています 例外で有用なパスを取得できるようにします。

また、コードが例外を飲み込まないようにしてください。コードでエラー メッセージを確認できた場合、コードが間違った場所を検索しようとしたことがすぐにわかります。

最後に、このアプローチは脆弱です。パスが変更された場合、別の Web サーバーが使用された場合、およびその他の多くの場合、アプリが壊れます。

webapp strsproperties の拡張を検討してください HTTP リクエストを受け入れる。そうすれば、strsproperties に接続するようにアプリを構成できます URL経由。これはどの Web サーバーでも機能し、別のホストにプロパティを配置することもできます。


コードがサーブレット内で実行される場合は、 getServletContext().getRealPath("/strs.properties") を使用する方が簡単かもしれません 絶対ファイル パスを取得します。


Linux
  1. Linuxでディレクトリサイズを取得する方法

  2. Linux シェルから、現在とは異なる作業ディレクトリでプログラムを実行するにはどうすればよいですか?

  3. ファイルのフルパスを取得するには?

  1. Linux で .so ファイルを java.library.path に追加する方法

  2. IP (Linux) からホスト名を取得するには?

  3. Linux で別のユーザーのホーム ディレクトリからファイル/フォルダをコピーするにはどうすればよいですか?

  1. Linux – OracleJava7をSetcapCap_net_bind_service+ epと連携させる方法は?

  2. Linux のディレクトリにある最新のファイルを取得する

  3. bashからネットマスクを取得するには?