Java (Tomcat 7)部署的jar找不到文件

Java (Tomcat 7)部署的jar找不到文件,java,eclipse,maven,tomcat,jar,Java,Eclipse,Maven,Tomcat,Jar,我在一台远程Linux机器上运行的Tomcat7实例上部署了一个war文件,并且得到了FileNotFoundExceptions 项目中的一个引用JAR(其中包含我没有编写的代码)使用了几个文件(我已经包含了这些文件,但找不到)。这些文件位于“类”文件夹中。这个jar似乎忽略了我为项目设置的类路径。它使用的这些文件,例如,属性文件是jar的外部文件 下面是它如何调用文件的示例: FileOutputStream fos = new FileOutputStream("Key.ser"); 我

我在一台远程Linux机器上运行的Tomcat7实例上部署了一个war文件,并且得到了FileNotFoundExceptions

项目中的一个引用JAR(其中包含我没有编写的代码)使用了几个文件(我已经包含了这些文件,但找不到)。这些文件位于“类”文件夹中。这个jar似乎忽略了我为项目设置的类路径。它使用的这些文件,例如,属性文件是jar的外部文件

下面是它如何调用文件的示例:

FileOutputStream fos = new FileOutputStream("Key.ser");
我在Eclipse中开发源项目时遇到了这些错误。我可以通过运行配置->参数->其他来配置项目,告诉它在哪里可以找到这些文件,但是导出的.war文件似乎没有绑定这些文件,只有源项目有。现在,当我试图通过war文件将应用程序部署到另一台服务器上的Tomcat时,我再次看到了它们

如何在已部署的Tomcat7WebApp中配置已部署的jar文件以查找jar使用的这些文件?我讨厌改变代码,因为我没有写它,所以我真的希望避免这种情况


我能够在运行在与Eclipse集成的Windows实例上的本地Tomcat 7上实现这一点,如前所述,因此我想知道这是否可以复制?

您将无法通过使用
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);

您将无法通过使用
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);

看来我还是要修改密码了,达尼特。我很好奇,jar的工作目录设置为什么?也许我可以将文件硬链接到那里或其他什么地方?当作为进程或服务运行Tomcat时,默认情况下工作目录将是Tomcat的installation/bin目录,Tomcat7.exe或任何版本通常从该目录启动。如果您的意思是,提取jar的工作目录是什么,那么可以对其进行配置。查看“workDir”的搜索了解更多信息。所以听起来我还是需要更改代码,darnit。我很好奇,jar的工作目录设置为什么?也许我可以将文件硬链接到那里或其他什么地方?当作为进程或服务运行Tomcat时,默认情况下工作目录将是Tomcat的installation/bin目录,Tomcat7.exe或任何版本通常从该目录启动。如果您的意思是,提取jar的工作目录是什么,那么可以对其进行配置。有关更多信息,请查看“workDir”搜索。