1

我在 Eclipse IDE 中有一个 Java 项目。如果我创建新的 File 对象。喜欢File file = new File("someFile.txt")。它期望 someFile.txt 出现在项目主页中。而且我可以把它放在某个目录中,config/someFile.txt 并且可以在新的 File 构造函数中使用它。这里一切都好。

当我制作这个项目的 JAR 并将它放在 WEB-INF/lib 中时。然后new File("someFile.txt")代码需要 TOMCAT_HOME/bin 中的文件。我用file.getAbsolutePath();. 这是我无法控制的。我的问题是为什么在 java web 应用程序中 new File 期望在 bin 目录中。为什么不把项目放在家里。这样我就可以轻松导航到我的配置目录。即使../../导航也不起作用。因为它们被附加TOMCAT_HOME/bin/../../someFile.txt并导致文件不存在。

我希望我已经很好地解释了我的问题。

4

1 回答 1

5

TOMCAT_HOME/bin是 JVM 进程的工作目录,因此每个相对路径都将相对于该目录进行解析。

除了不在 webapps 中使用相对文件路径之外,您无能为力。更好的是,使用ServletContext.getRealPath()Class.getResourceAsStream()

于 2012-04-24T11:53:46.933 回答