2012-12-31 36 views

回答

1

如果它不能为红色,那么它最可能不是你期望的。根据你发布的代码判断,我想你的xml文件是用来存放在jar/package结构中的。

这是我的测试项目结构:

src 
|-- main 
    |-- java 
     |-- mypackage 
       MyCode.java 
       MyResource.xml 

相应的生成jar文件位于target/目录,如下所示:

mypackage 
    MyCode.class 
    MyResource.xml 

MyResource.xml看起来是这样的:

<a>b</a> 

MyCode.java l ooks这样的:

public class MyCode { 

public static void main(String[] args) throws Exception {   
    String packagePath= "/mypackage/MyResource.xml"; 
    String myPath ="src/main/java"+packagePath; 
    File f = new File(myPath); 
    System.out.println(f.exists());   
    InputStream is = Class.class.getResourceAsStream(packagePath);     
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
    DocumentBuilder db = dbf.newDocumentBuilder(); 
    Document d = db.parse(is); 
    System.out.println(d.getElementsByTagName("a").item(0).getTextContent());   
    }  
} 

在运行时它打印:

true 
b 

方法getResourceAsStream用于加载资源从JAR内。希望有所帮助。

+0

但是我得到一个异常:java.lang.IllegalArgumentException:InputStream不能为空 – user1914867

+0

这意味着你的packagePath中有一个错误,或者文件没有​​打包在JAR中。检查你的路径并打开JAR,并确保文件位于JAR中的确切位置,并具有在packagePath变量中类似指定的确切名称。 – linski

+0

非常感谢你,它现在正在完善。 – user1914867

相关问题