2013-03-15 84 views
0

在我的应用我读取XML文件(说ABC.xml),这是在WebContent/META-INF文件夹,并解析它使用DOM解析器 如下冲突在日食相对路径文件名

File xmlFile = new File("WebContent//META-INF//ABC.xml"); 
parser.parse(new InputSource(new FileReader(xmlFile.getAbsolutePath()))); 

它显示文件未发现异常,当我打印xmlFile.getAbsolutePath()它显示

D:\Softwares\SDE_7\eclipse\WebContent\META-INF\ABC.xml 

这是我的Eclipse设置位于

所以我试图用同样的逻辑在简单的Java程序和打印的绝对路径它显示 正确的路径(项目文件夹结构)和程序工作正常

D:\GME_WorkSpace\Practice_1\WebContent\META-INF\sample.xml 

为什么是这个矛盾呢?我该如何纠正它?

+0

WebContent是您的开发环境eclipse存储web应用程序源的目录。在执行时,这个目录将不存在。您所拥有的只是一个包含已部署应用程序文件和文件系统的war文件。 – 2013-03-15 11:17:32

+0

** WebContent **您的上下文根文件夹?如果是这种情况,你可以把它放在你的相对路径之外。你为什么在你的名字路径中有双重斜杠?如果你有反斜杠,你只能使用它们 – greenkode 2013-03-15 11:18:15

+0

我只在开发环境中得到这个错误。请你解释为什么会发生这种冲突? – Dobby 2013-03-15 11:18:58

回答

1

如果您在谈论WebContent,那听起来您已经写了一个Servlet。

在这种情况下,您应该使用ServletContext来查找您的文件。

getServletContext()。getRealPath(...)将获得Servlet中相对文件名的完整操作系统路径。

可以从任何继承自HttpServlet的类中调用getServletContext()。

0
ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); 
URL url = classLoader.getResource("WebContent//META-INF//ABC.xml"); 
File file = new File(url.toURI());