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") );