我一直认为URL
s 可以通过这个构造函数组成,并且类似于
new URL(new URL("file:/foo/bar/"), "images/a.png")
我明白了
file:/foo/bar/images/a.png
正如预期的那样。1但是,从OneJar我获得了一个看起来很奇怪的 URL 和结果
new URL(new URL("onejar:foo.bar"), "images.a.png")
简直就是
onejar:images.a.png
父路径被简单地删除。我尝试用 or 为这些部分添加前缀或后缀/
,.
但没有任何变化。更新:这不是真的,见下文。
这是一个错误还是我错过了什么?我必须通过字符串来做吗(感觉很hacky)。
更新:
我看到尾部斜线确实有帮助。无论出于何种原因,onejar
使用点作为分隔符,但它似乎也接受斜线。因此,我可以将原始 URLonejar:foo.bar
转换为字符串、追加/
和转换回 URL。然后可以通过上面提到的构造函数组合结果,所以它似乎是正确的方法。
1 除非我忘记了斜杠,我经常这样做,但这是另一回事。