将配置文件放入Eclipse的正确位置

时间:2013-01-14 08:24:53

标签: java eclipse java-ee

我在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文件的正确位置在哪里?

提前致谢。

4 个答案:

答案 0 :(得分:2)

在具有完全没有控制本地磁盘文件系统的当前工作目录的环境中,使用new File()和相对路径会导致您的具体问题。所以,算了吧。您需要通过其他方式获取它:

  1. 使用ClassLoader#getResourceAsStream()直接从类路径(src文件夹,您的Java类也在那里):

    Document doc= new SAXReader().read(Thread.currentThread().getContextClassLoader().getResourceAsStream("appContext.xml"));
    
  2. 使用ServletContext#getResourceAsStream()直接从公共webcontent(WebContent文件夹,/WEB-INF文件夹所在的位置):

    Document doc= new SAXReader().read(servletContext.getResourceAsStream("/WEB-INF/appContext.xml"));
    

    继承的getServletContext()方法可以使用ServletContext servlet。

  3. 另见:

答案 1 :(得分:0)

您可以将配置文件嵌入到jar / war文件中

InputStream is = MyClass.class.getResourceAsStream("/com/site/config/config.xml");

答案 2 :(得分:0)

您可以创建一个包含所有配置的文件夹,并在服务器上发布时在Web应用程序的类路径上引用它,或者将它们放在WebContent文件夹下,在这两种情况下都需要相对引用它们。

答案 3 :(得分:0)

您可以在多个地方放置属性文件。选址取决于项目的结构。 常用的位置是:

  • /YourProjectRootFolder/src/main/webapp/WEB-INF/properties/XYZ.properties :在您拥有java类文件的同一文件夹中。
  • YourProjectConfFolderNAme / src / main / resources / XYZ.properties :此处所有属性文件都保存在与项目类文件不同的位置。

两者都与将所有属性文件移动到服务器的conf文件夹所需的相同。