我在Eclipse中创建了一个Dynamic Web Project,我有一个需要读取配置文件的以下Java语句:
Document doc= new SAXReader().read(new File(ConstantsUtil.realPath+"appContext.xml"));
基本上,ConstantsUtil.realPath将返回一个空字符串。
我尝试将“appContext.xml”放在“src”文件夹下和“WEB-INF”文件夹下。但是,我总是会收到以下错误:
org.dom4j.DocumentException: appContext.xml (The system cannot find the file specified)
我真的很困惑:在Eclipse中,放置我的config xml文件的正确位置在哪里?
提前致谢。
答案 0 :(得分:2)
在具有完全没有控制本地磁盘文件系统的当前工作目录的环境中,使用new File()
和相对路径会导致您的具体问题。所以,算了吧。您需要通过其他方式获取它:
使用ClassLoader#getResourceAsStream()
直接从类路径(src
文件夹,您的Java类也在那里):
Document doc= new SAXReader().read(Thread.currentThread().getContextClassLoader().getResourceAsStream("appContext.xml"));
使用ServletContext#getResourceAsStream()
直接从公共webcontent(WebContent
文件夹,/WEB-INF
文件夹所在的位置):
Document doc= new SAXReader().read(servletContext.getResourceAsStream("/WEB-INF/appContext.xml"));
继承的getServletContext()
方法可以使用ServletContext
servlet。
答案 1 :(得分:0)
您可以将配置文件嵌入到jar / war文件中
InputStream is = MyClass.class.getResourceAsStream("/com/site/config/config.xml");
答案 2 :(得分:0)
您可以创建一个包含所有配置的文件夹,并在服务器上发布时在Web应用程序的类路径上引用它,或者将它们放在WebContent文件夹下,在这两种情况下都需要相对引用它们。
答案 3 :(得分:0)
您可以在多个地方放置属性文件。选址取决于项目的结构。 常用的位置是:
两者都与将所有属性文件移动到服务器的conf文件夹所需的相同。