【问题标题】:ClassLoader shows wrong path on LinuxClassLoader 在 Linux 上显示错误的路径
【发布时间】:2016-03-07 23:02:07
【问题描述】:

我正在使用 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。 我试过这个solutions,但我认为问题不在于从.jar 文件中读取。关于我做错了什么还有其他想法吗?

【问题讨论】:

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

标签: java linux filenotfoundexception


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-01
    • 2013-03-10
    • 2017-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-09
    • 1970-01-01
    相关资源
    最近更新 更多