Java 类加载器在Linux上显示错误路径

Java 类加载器在Linux上显示错误路径,java,linux,filenotfoundexception,Java,Linux,Filenotfoundexception,我正在使用classLoader加载位于/src/XMLS下的xml文件: String m_path = "XMLS/file.xml" ClassLoader cl = getClass.getClassLoader(); file f1 = new file(cl.getResource(m_path).getFile)); 在windows上运行它可以正常工作,但是在导出到jar并在Linux上运行它之后,我得到了FileNotFoundException-/XMLS/file.xm

我正在使用classLoader加载位于
/src/XMLS
下的xml文件:

String m_path = "XMLS/file.xml"

ClassLoader cl = getClass.getClassLoader();
file f1 = new file(cl.getResource(m_path).getFile));
在windows上运行它可以正常工作,但是在导出到jar并在Linux上运行它之后,我得到了
FileNotFoundException
-/XMLS/file.xml

我已经试过了,我不认为问题出在读取
.jar
文件上。关于我做错了什么,还有其他想法吗?

这对jar文件中的资源不起作用,因为jar文件不是文件系统中的文件。相反,您需要使用
getResourceAsStream()
,它返回一个
InputStream
以直接使用:

InputStream in = someClass.getClassLoader().getResourceAsStream("/XMLS/file.xml");

这不适用于jar文件中的资源,因为jar文件不是文件系统中的文件。相反,您需要使用
getResourceAsStream()
,它返回一个
InputStream
以直接使用:

InputStream in = someClass.getClassLoader().getResourceAsStream("/XMLS/file.xml");

您在Win和Linux上运行的方式是否相同?或者您只是在Linux上运行导出的JAR,并在Win上使用其他方式?在Linux上执行JAR时,您的类路径设置是否正确?Linux中的文件名区分大小写,而windows中的文件名则不区分大小写-可能是大小写不匹配吗?1-在两台机器上以相同的方式运行。2-我相信是的。您在Linux上执行的Java命令行是什么?@JoseMartinez sh scipt_name.shAre您在Win和Linux上以相同的方式运行它吗?或者您只是在Linux上运行导出的JAR,并在Win上使用其他方式?在Linux上执行JAR时,您的类路径设置是否正确?Linux中的文件名区分大小写,而windows中的文件名则不区分大小写-可能是大小写不匹配吗?1-在两台机器上以相同的方式运行。2-我相信是的。您在Linux上执行的Java命令行是什么?@JoseMartinez sh scipt_name.sh