0

我的逻辑需要加载一个嵌入在应用程序.war 中的文件。该文件位于应用程序的根目录。它在我的机器上运行良好,因为路径是硬编码的: File hmmFile = new File("/home/kirill/projetos/biosearchrefinement/pos-en-bio-medpost.HiddenMarkovModel"); 但是当我将它部署到服务器时它不会工作,因为绝对路径不同。

我尝试使用 ClassLoader 但得到一个空引用并尝试使用 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 回答