一尘不染

相对路径的绝对路径(Eclipse,JSP)

jsp

我正在Eclipse(JSP)中制作一个Web应用程序,并将Tomcat用作服务器(已集成到Eclipse中)。我必须在下面创建对象并指定配置文件的路径。这个绝对路径非常有效:

Store store = StoreFactory.create("file:///C:/Users/Aliens/workspace/myProject/WebContent/config/sdb.ttl");

但是我想知道为什么我不能使用相对路径。是否"config/sdb.ttl"正确(如果项目名称是根)?但是它不能以这种方式定位(NotFoundException)。


阅读 342

收藏
2020-06-10

共1个答案

一尘不染

相对磁盘文件系统路径是相对于当前工作目录的,这取决于您启动应用程序的方式(在Eclipse中将是项目文件夹,在Command
Console中将是当前打开的文件夹,在Tomcat管理器/服务中将是的Tomacat/bin文件夹,等等)。您无法从Java代码内部对此进行控制,所以就算了吧。

在JSP /
Servlet中,您可以用于ServletContext#getRealPath()将相对的Web内容路径(其根在公共Web内容中,在您的情况下为/WebContent文件夹)转换为绝对磁盘文件系统路径。所以:

String relativeWebPath = "/config/sdb.ttl";
String absoluteDiskPath = getServletContext().getRealPath(relativeWebPath);
Store store = StoreFactory.create(absoluteDiskPath);
// ...

ServletContext是由继承的Servlet可用getServletContext()的方法。

2020-06-10