我将一个war文件部署到运行在远程Linux机器上的Tomcat 7实例上,我正在获取FileNotFoundExceptions。
项目中引用的一个jar,其中包含我没有编写的代码,它使用了几个文件(我已经包含但未查找)。这些文件位于classes文件夹中。看来我为这个项目设置的类路径被这个jar忽略了。它使用的这些文件,例如.properties文件在jar外部。
以下是调用文件的示例:
FileOutputStream fos = new FileOutputStream("Key.ser");
在Eclipse中开发源项目时遇到了这些错误。我能够配置项目,通过运行配置告诉它在哪里找到这些文件 - >参数 - >除了导出的.war文件之外的其他文件似乎没有与它捆绑在一起,只有源项目有它。现在,当我尝试通过war文件将应用程序部署到另一台服务器上的Tomcat时,我再次看到它们。
如何在已部署的Tomcat 7 webapp中配置已部署的jar文件以查找jar使用的这些文件?我不愿意改变代码,因为我没有写它,所以我真的希望避免这种情况。
我能够在运行在与Eclipse集成的Windows实例上运行的本地Tomcat 7上工作,如前所述,所以我想知道这是否可以复制?
答案 0 :(得分:2)
您只需使用FileOutputStream
引用文件名即可找到该文件。将文件放在'WEB-INF / classes'目录中是正确的,这将允许它位于类路径上。
要加载文件,您需要使用与此类似的东西将其作为类路径资源加载:
String classpathLocation = ""Key.ser"";
URL classpathResource = Thread.currentThread().getContextClassLoader().getResource(classpathLocation);
// Or if you want it as an inputstream:
InputStream input = Thread.currentThread().getContextClassLoader().getResourceAsStream(classpathLocation);