为什么新的File()希望文件在Java Web应用程序中的TOMCAT_HOME/bin中?

Tah*_*ram 1 java file-io tomcat

我在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应用程序中新的File期望在bin导演中.为什么不把项目带回家.这样我就可以轻松导航到我的配置目录了.甚至../../导航也不起作用.因为它们会被附加TOMCAT_HOME/bin/../../someFile.txt并导致文件不存在.

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

ska*_*man 5

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

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