getResourceAsStream在新环境下失败?

getResourceAsStream在新环境下失败?,第1张

getResourceAsStream在新环境下失败?

取决于您如何获取资源。当您在其中使用

ClassLoader
as时:

InputStream stream= getClass().getClassLoader().getResourceAsStream("/com/thinkplexx/lang/de/general.xml");

前导“ /”是没有意义的。因此,正确的格式是“ com / thinkplexx / lang / de / general.xml”。

如果是,而是使用“类”,例如:

InputStream stream= getClass().getResourceAsStream("/com/thinkplexx/lang/de/general.xml");

您得到不同的行为。该

Class.getResourceAsStream
会考虑类,而领先“”
相对于包含类的包。以“。”开头的资源。是绝对的,或相对于jar根解析的。

因此,如果

this
是对的引用
com.example.SomeThing
,则预期的行为是:

getClass().getResourceAsStream("/a/b/c.xml")  ==> a/b/c.xmlgetClass().getResourceAsStream("a/b/c.xml")  ==> com/example/a/b/c.xmlgetClass().getClassLoader().getResourceAsStream("a/b/c.xml")  ==> a/b/c.xmlgetClass().getClassLoader().getResourceAsStream("/a/b/c.xml")  ==> Incorrect

Maven2松懈并允许使用最后一种形式。



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5490743.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-12
下一篇2022-12-12

发表评论

登录后才能评论

评论列表(0条)

    保存