我在Eclipse(JSP)中创建一个Web应用程序,并使用Tomcat作为服务器(集成到Eclipse中)。我必须在下面创建对象并指定配置文件的路径。这条绝对的道路很有效:
Store store = StoreFactory.create("file:///C:/Users/Aliens/workspace/myProject/WebContent/config/sdb.ttl");
但是我想知道为什么我不能使用相对路径。是"config/sdb.ttl"
是否正确(如果项目的名称是根)?但它找不到这种方式(NotFoundException
)。
答案 0 :(得分:5)
相对磁盘文件系统路径是相对于当前工作目录的,这取决于您启动应用程序的方式(在Eclipse中它将是项目文件夹,在命令控制台中它将是当前打开的文件夹,在Tomcat管理器/服务中它将是Tomacat/bin
文件夹等)。你无法从Java代码中控制它,所以不要管它。
在JSP / Servlet中,您可以使用ServletContext#getRealPath()
将相对Web内容路径(它的根目录在公共webcontent中,在您的情况下为/WebContent
文件夹)转换为绝对磁盘文件系统路径。所以:
String relativeWebPath = "/config/sdb.ttl";
String absoluteDiskPath = getServletContext().getRealPath(relativeWebPath);
Store store = StoreFactory.create(absoluteDiskPath);
// ...
继承的getServletContext()
方法在servlet中可以使用ServletContext
。
答案 1 :(得分:0)
正确/标准/兼容的方式是使用http://adderpit.com/jdk/j2eedocs/api/javax/servlet/ServletContext.html#getResourceAsStream(java.lang.String)
喜欢
servletContext.getResourceAsStream("config/sdb.ttl");