0

Maven経由で.warファイルにデプロイするJavaサーブレットプロジェクトがあります。これは、Tomcat サーブレット コンテナーで実行されます。私は Wordnet を使用しているので (正確には、この API を使用します: http://extjwnl.sourceforge.net/ )、いわゆる「dictionary_path」の値を保持する file_properties.xml ファイルがあります。この値は、保存された辞書へのパスを保持する必要があります。ローカル マシンでテストしたところ、次の値はもちろん機能しました: "C:\Users\XY\Documents\NetBeansProjects\project-name\src\main\resources\dict\"

war ファイルにデプロイして tomcat で実行すると、このパスはもちろん機能しなくなります。XML に値を正しく入力するにはどうすればよいですか? ターゲット フォルダは、「\WEB-INF\classes」フォルダ内の war ファイルにあります。

xml は現在次のようになっています。 <param name="dictionary_path" value="C:\Users\username\Documents\NetBeansProjects\projectname\src\main\resources\dict\"/>

解決策: 回避策でこれを解決しました: XML ファイルはもう必要ありません。代わりに、パスを指定して辞書をインスタンス化します。

String dictPath = WordNetDictionary.class.getResource("/dict").toExternalForm();
//trim dictPath here depending on the OS
this.dictionary = Dictionary.getFileBackedInstance(dictPath);
4

2 に答える 2

0

解決策: 回避策でこれを解決しました: XML ファイルはもう必要ありません。代わりに、パスを指定して辞書をインスタンス化します。

String dictPath = WordNetDictionary.class.getResource("/dict").toExternalForm();
//trim dictPath here depending on the OS
this.dictionary = Dictionary.getFileBackedInstance(dictPath);
于 2013-01-22T09:20:31.070 に答える
0

フレームワークがファイルを必要とするように見え、.war としてパッケージ化している場合、差し迫った問題があります。

私はおそらく次のアプローチを取るでしょう。プロパティ ファイルを .war にパッケージ化します。その後、 ClassLoader.getResourceAsStream()を使用できます。これにより、クラスにパッケージ化されたプロパティ ファイルが見つかります。それを読み取り、指定されたディレクトリに書き込みます。そのディレクトリは、XML 構成のディレクトリと一致する必要があります。次に、指定した構成でフレームワークをインスタンス化できます。そのパスは、ファイルを書き込んだディレクトリを指します。

于 2013-01-16T12:41:40.450 に答える