reader.read("src/book2.xml") 使用相對檔案系統路徑,執行時工作目錄為專案根目錄或 target/classes,導致找不到 src/ 下的檔案。
src/main/resources/(Maven)或 src/(Eclipse 預設),編譯後自動複製至 target/classes/。
InputStream is = getClass().getClassLoader().getResourceAsStream("book2.xml");
Document doc = reader.read(is);
Document doc = reader.read(new File("D:/data/book2.xml"));
String path = getServletContext().getRealPath("/WEB-INF/xml/book2.xml");
Document doc = reader.read(path);
src/
├── main/
│ ├── java/
│ │ └── cn/iast/dom4j/Dom4jDemo.java
│ └── resources/
│ └── book2.xml <-- 放這裡
// 列印 classpath 確認資源是否被複製
System.out.println(getClass().getClassLoader().getResource("book2.xml"));
若印出 null,檢查建置工具(Maven/Gradle/Eclipse)是否將 resources 目錄納入輸出。