Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从jar读取xml文件时出现问题_Java_Xml - Fatal编程技术网

Java 从jar读取xml文件时出现问题

Java 从jar读取xml文件时出现问题,java,xml,Java,Xml,可能重复: 嗨 我有一节课 我有一个文件 Document doc=db.parse(element.xml); 但当我创建jar时,它并没有被加载, 所以,请告诉我还有没有其他方法可以给出文件的路径, 因此,我可以运行我的jar用户ClassLoader.getSystemResource(“root/src/com/ensarm/niidle/web/social/sites/sitelist.xml”).getPath();指向xml或任何资源文件 注意:必须将xml文件位置添加到类路径

可能重复:

嗨 我有一节课 我有一个文件 Document doc=db.parse(element.xml); 但当我创建jar时,它并没有被加载, 所以,请告诉我还有没有其他方法可以给出文件的路径,
因此,我可以运行我的jar

用户ClassLoader.getSystemResource(“root/src/com/ensarm/niidle/web/social/sites/sitelist.xml”).getPath();指向xml或任何资源文件

注意:必须将xml文件位置添加到类路径。(-Djava.class.path=“C:\project\resources”),其中xml位于C:\project\resources

db.parse(Foo.class.getResource("/com/ensarm/niidle/web/social/sites/sitelist.xml").toString());
其中Foo是在同一个jar中编写代码的类,调用并从流中读取数据:

db.parse(Foo.class.getResourceAsStream("/com/ensarm/niidle/web/social/sites/sitelist.xml"));

您应该始终更喜欢使用流来读取数据,而不是期望存在特定的文件。

使用类加载器从类路径加载任何资源:

    ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
    InputStream input = classLoader.getResourceAsStream("/com/ensarm/niidle/web/social/sites/sitelist.xml");
    db.parse(input);

您是否尝试过
com/ensarm/niidle/web/social/sites/sitelist.xml
?+1来使用Thread.currentThread().getContextClassLoader();非常感谢Jigar,它帮助了我很多。欢迎您将其标记为答案
ClassLoader loadClass = Thread.currentThread().getContextClassLoader() ; 

InputStream in =  
new InputStreamReader(loadClass.getResourceAsStream("com/ensarm/niidle/web/social/sites/sitelist.xml") );