あなたの問題は、「現在の」ディレクトリが何であるかがわからないことです。 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") を使用する方が簡単かもしれません 絶対ファイル パスを取得します。