簡體   English   中英

讀取配置xml文件時出現java FileNotFoundException

[英]java FileNotFoundException while reading config xml file

我需要從動態Web項目中讀取config.xml文件。 我已將文件放在文件夾結構MyProj / WebContent / WEB-INF / classes / config.xml文件夾中。 當我打印文件new File(config.xml).getAbsolutePath()的絕對路徑時,它會檢查eclipse主目錄(C:\\ Temp \\ eclipse \\ eclipse)而不是我的項目主目錄(C:\\ Temp \\ MyProj )。 因此,我遇到了問題FIleNotFoundException。 如何告訴eclipse從我的項目目錄中檢查文件?

在Eclipse IDE中使用tomcat 7。

如果您的項目是動態Web應用程序,則意味着您應該遵守JEE規則,並且這些規則之一是:不要使用文件,而要使用資源。 您的Web應用程序將部署在可以安裝在任何地方的Web容器(例如Tomcat)中。 通過將配置文件作為資源訪問,可以在類路徑中搜索它們,該路徑更加靈活並且獨立於Web應用程序或容器的絕對文件位置。

如果將config.xml放在WEB-INF / classes中,它將位於您的類路徑中。 您應該將其作為資源而不是文件進行訪問。

我建議您提高有關如何在Java中管理和訪問資源的知識。

在課程中,您可以執行以下操作:

InputStream configInput=this.getClass().getResourceAsStream("/config.xml");

由於它看起來像是XML文件,因此可以使用XML解析器讀取它:

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.xml.sax.SAXException;
...
    try {
        DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
        Document doc = dBuilder.parse(this.getClass().getResourceAsStream("/config.xml"));
    } catch (ParserConfigurationException | SAXException | IOException e) {
        e.printStackTrace();
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM