(tomcat7)部署的jar找不到文件

xn1cxnb4  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(472)

我将一个war文件部署到一个在远程linux机器上运行的tomcat7示例上,得到了filenotfoundexceptions。
项目中引用的jar中有一个包含我没有编写的代码,它使用了几个文件(我已经包含了这些文件,但是找不到)。这些文件位于classes文件夹中。这个jar似乎忽略了我为项目设置的类路径。它使用的这些文件,例如属性文件是jar的外部文件。
下面是它如何调用文件的示例:

FileOutputStream fos = new FileOutputStream("Key.ser");

我在eclipse中开发源项目时遇到了这些错误。我可以通过runconfigurations->arguments->other来配置项目,告诉它在哪里可以找到这些文件,但是导出的.war文件似乎没有绑定这些文件,只有源项目才有。现在,当我试图通过war文件将应用程序部署到另一台服务器上的tomcat时,我又看到了它们。
如何在部署的tomcat7webapp中配置部署的jar文件以查找jar使用的这些文件?我讨厌改变代码,因为我没有写它,所以我真的希望避免这一点。
如前所述,我能够在本地tomcat7上运行与eclipse集成的windows示例,所以我想知道这是否可以复制?

x33g5p2x

x33g5p2x1#

您将无法通过使用引用文件名来查找文件 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);

相关问题