从JSP访问文件时的FileNotFoundException,但如果从普通的Java应用程序访问,则有效

时间:2014-03-27 13:35:20

标签: java jsp tomcat

我正在尝试从java访问属性文件,当我将其作为独立的Java应用程序运行时,它会工作。但是,当我调用从tomcat服务器上运行的jsp页面访问文件的方法时,我得到一个FileNotFoundException。

我认为当文件部署到服务器时,它们的路径会发生变化,这就是为什么异常发生在Web应用程序中而不是直接发生在java中。下面是我项目的项目浏览器视图。

enter image description here

我从java中的LabelRequestMessages类访问nWMS属性文件。下面是我用java访问该文件的代码。

in = new FileInputStream("resources-dev/com/infosys/gidl2/shiplabel/mybatis/config/"
                            + propsDB); //propsDB has the file name
            props.load(in);

有人可以告诉我如何提供路径,以便在tomcat服务器中部署时可以访问该文件。

3 个答案:

答案 0 :(得分:1)

您正试图在.war应用程序中获取资源,请考虑使用

private static final String ENDINGS_FILE_NAME = "com/infosys/gidl2/shiplabel/mybatis/config/" + propsDB;
...
InputStream is = getClass( ).getResourceAsStream(ENDINGS_FILE_NAME); 

但首先要记住在web.xml中设置资源文件夹,因为tomcat需要知道在哪里搜索它。

答案 1 :(得分:1)

您需要从类路径引用该文件。尝试

in = this.getClass().getClassLoader().getResourceAsStream("om/infosys/gidl2/shiplabel/mybatis/config/nWMS_database.properties");

确保将resource-dev目录视为源目录,以便它包含在war文件的WEB-INF / classes中。

答案 2 :(得分:1)

尝试将其更改为

new FileInputStream("com.infosys.gidl2.shiplabel.mybatis.config."+ propsDB);