Web应用程序中使用的JAR文件的相对路径

时间:2012-02-10 11:10:45

标签: java path web relative

首先,如果标题不像它应该的描述那样对不起,但是很难用这么短的方式来解释它。

我有一个必须从属性文件中读取的Java应用程序(非Web)。此Java应用程序也必须作为JAR文件导出,然后在Web应用程序中使用,但属性文件不在JAR文件中。它看起来像这样:

/webapps/MyWebApp/WEB-INF/myJavaApp.jar
/webapps/MyWebApp/WEB-INF/config.properties

因此,在编写将导出为myJavaApp.jar的Java应用程序时,我无法执行此操作,因此它将从Relative路径读取config.properties文件。如果我放置一个绝对路径它可以正常工作:

properties.load(new FileInputStream("C:/Program Files/Apache Software Foundation/Tomcat 6.0/webapps/MyWebApp/WEB-INF/config.properties"));

但是,如果我尝试使用相对路径,它就不起作用。我从这里或其他网页尝试了不同的解决方案,但它们都没有工作。

几乎忘记了,我正在阅读属性文件的类是静态的!

如果有人能够对此有所了解,我们将不胜感激。

先谢谢。

2 个答案:

答案 0 :(得分:0)

在Java应用程序中,您可以通过以下方式获取当前目录的绝对路径:

 System.getProperty("user.dir");  

假设您有config.properties驻留在同一目录中,您应该能够在java代码中找出该文件的绝对路径,并且可以将其部署到任何地方,而无需对您的绝对路径进行硬编码码。

编辑:

如果您的Java App是可执行JAR,则只有在直接调用它时,上面的命令才会返回正确的目录。如果从另一个进程间接调用此应用程序,则在Windows平台上,起始目录将是windows / system32,因此您必须分析如何调用jar。如果是后者,最好在您的Web应用程序中添加功能,以便为jar提供属性文件的路径。

答案 1 :(得分:0)

如果您确保该文件位于classpath,那么您只需使用YourClassName.class.getResourceAsStream("/config.properties")加载该文件即可。这将是实现它的最简单方法。 对于您的webapplication,您将文件放在WEB-INF/classes/中,而对于您的独立应用程序,您只需在启动应用程序时设置类路径。

相关问题