0

私のロジックは、アプリケーション .war に埋め込まれたファイルをロードする必要があります。ファイルはアプリケーションのルートにあります。パスがハードコードされているため、私のマシンでは問題なく動作します。しかし、サーバーにデプロイすると、絶対パスが異なるため機能しません。

ClassLoader を使用しようとしましたが、null 参照を取得し、FacesContext を使用しようとしましたが、どちらも成功しませんでした。私はglassfish 3とMojarra 2.1.6を使用しています

私のプロジェクトツリーは次のようになります。 プロジェクトツリー

私のコードでは、次のようにファイルを参照しています。

File hmmFile = new File("/home/kirill/projetos/biosearchrefinement/pos-en-bio-medpost.HiddenMarkovModel");

ただし、これはアプリケーションをローカルで実行した場合にのみ機能します。リモート サーバーにデプロイすると、明らかにそのファイルのロードが停止します。このファイルをプロジェクトのルート フォルダに相対的にロードしたいと思います。

ありがとう!

4

2 に答える 2

0

ExternalContext から getRealPath() を使用して問題を解決しました。

ExternalContext ext = FacesContext.getCurrentInstance().getExternalContext();
String resourcesPath = ext.getRealPath("/WEB-INF/resources");
File hmmFile = new File(resourcesPath + "/pos-en-bio-medpost.HiddenMarkovModel");

うまくいきました!

于 2012-11-04T16:57:06.440 に答える
0

あいまいな説明から、必要なのはClass.getResourceAsStream()メソッドを使用することです。

于 2012-11-03T15:29:10.770 に答える