私はMavenとTomcatを備えた小さなRESTFulプロジェクトに取り組んでいます。私の実装の中では、私はtxtファイルを読む必要があります。 現在、Eclipseで実装をテストしています。絶対パスを使用するときは、問題なくコードを実行できます。 warファイルを生成する必要があるので、txtファイルをカプセル化する必要があります。 Mavenを使用してWAR内のファイルを読む
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<warSourceDirectory>WebContent</warSourceDirectory>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
私のwarファイルには、最高レベルに格納されているtxtファイルが含まれています。 warファイル内のtxtファイルから読み込むことをお勧めしますか?私はここでいくつかのスレッドを見つけましたが、すべての試みが失敗しました。私は、EclipseでテストしてTomcatで直接実行するときにファイルを読むことができる仕様が必要です。
このコードは、テキストファイルが見つからないため、Eclipseで実装を実行すると機能しません。このファイルはWebContentフォルダにあり、スナップショット/ warを生成した後、ファイルをwarファイルに格納します。
InputStreamFactory isf = new InputStreamFactory() {
public InputStream createInputStream() throws IOException {
return new FileInputStream("/text_de.txt");
}
};
私も(warファイルの実行時にエラーにつながること、私が知っている)にアクセスすることなく、Eclipseでの実装を実行する場合は、次の試してみました:
return new FileInputStream("/WebContent/text_de.txt");
UPDATE:
これでEclipse内の実装を成功させることができます。私が最初に注釈@Resourceでそれを試してみましたが、その後@Context
@Context
ServletContext servletContext;
に変更し、私はこの行を追加:
String fileLocation = System.getProperty("com.example.resourceLocation",servletContext.getRealPath("/text_de.txt"));
おかげ
私の仕様のため、/ WebContent /の内容は.warファイルのルートになります。私はEclipseで実装を実行できるようにしたいと思います(Tomcatを起動すると、Eclipseのサーバー用のリソースとしてプロジェクトが追加されます).warファイルを使用して実行できます。 – Matzka
多分私は誤解されています、あなたはあなたが日食内の場所からファイルを読む必要があるのですか? これは、 "/Users/user/workspace/project/WebContent/text.txt" のようになります。開発マシンのシステムプロパティを使用して、プロダクションのデフォルトの状況をオーバーライドすることができます。 – mzijdemans
私はサービスを開発していますEclipse内でwarファイルは別のTomcatインスタンスに統合されます。 Eclipseでテストpruposesのためのサービスを実行するときと生産システムで.warファイルを実行するときに動作するtxtファイルを読む方法が必要です。 Eclipseでプログラムを実行すると、.warファイルには触れません。読み込み操作をオーバーライドすることは良い考えのように聞こえるかもしれません。 – Matzka