1

我在 Eclipse 中创建了一个动态 Web 项目,并且我有一个需要读取配置文件的以下 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 中,放置我的配置 xml 文件的正确位置在哪里?

提前致谢。

4

4 回答 4

2

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

  1. 直接从类路径(该src文件夹,也就是您的 Java 类所在的文件夹)使用ClassLoader#getResourceAsStream()

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

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

    在继承方法ServletContext可用的 servlet 中。getServletContext()

也可以看看:

于 2013-01-14T14:10:37.020 回答
0

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

InputStream is = MyClass.class.getResourceAsStream("/com/site/config/config.xml");
于 2013-01-14T08:38:32.407 回答
0

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

于 2013-01-14T08:51:42.033 回答
0

可以有多个地方可以放置您的属性文件。位置的选择取决于项目的架构。常用位置有:

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

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

于 2013-01-14T13:32:54.257 回答