まず、Java EE WebアプリケーションでClassLoader#getSystemResourceAsStream()
を使用しないでください。代わりに、ClassLoader#getResourceAsStream()
を使用してください。私はまた、Java SEデスクトップアプリケーションにClassLoader#getSystemResourceAsStream()
を使用して大きな疑問符を付けることにしました。
ClassLoader
は最終的にクラスパスからリソースをロードします。したがって、ファイルを新しいパスをサーバー経由でwebappのランタイムクラスパスに追加するには、webappのランタイムクラスパスまたはでデフォルトでカバーされているパスの1つにファイルが配置されていることを確認するだけですTomcatの/conf/catalina.properties
のshared.loader
プロパティなどの特定の構成設定。
webappのランタイムクラスパスでカバーされるデフォルトパスの1つは、WARの/WEB-INF/classes
フォルダです。 IDEプロジェクトの観点からは、「Java Source」(src)フォルダのルートフォルダにファイルをドロップします。ここには、すべてのJavaパッケージとクラスがあります。 IDEは最終的にビルドされたWARファイル/WEB-INF/classes
で終わるよう注意します。
私はまだあなたがではないと仮定します。明示的に述べたように、webappの内部からファイルを作成しています。それはうまくいかないでしょう。 実際ににも書き込みアクセス権が必要な場合は、代わりに絶対ディスクファイルシステムパスが必要になります。たとえば、VMの引数や環境変数として指定することで、いつでも設定可能にすることができます。