gpt4 book ai didi

Java - 特殊 URL 字符

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:22:46 27 4
gpt4 key购买 nike

我有一个函数:

public static ImageIcon GetIconImageFromResource(String path){
URL url = ARMMain.class.getResource(path);
return new ImageIcon(url);
}

效果很好,但是如果我将我的 .JAR 文件放到例如 C:\Ares!!!\myfile.jar 上,它会失败并且我看不到我的图标。我观察到我的 URL 是 file:/C:/Ares!!!/myfile.jar!/com/test/images/img.png。所以在 JAR 扩展之后有 ! 符号!我觉得这是主要原因!我该怎么做才能避免这个问题?谢谢。

最佳答案

这显然是 Java 的一个问题(不仅仅是错误)。 JAR URL 使用 !/ 作为分隔符,但当它出现在文件路径中时不会对其进行转义。

你可以自己尝试越狱,把Ares!!!/变成Ares!!%21/,但是保留myfile.jar!/ 原样。


根据 RFC3986,! 是保留的子分隔符字符。因此使用它来分隔 URL 中的不同部分是安全的;当它出现在一个部分中时,它必须被转义为 %21

但是,处理 JAR URL 的 Java 代码显然遵循旧的 RFC2396,其中 ! 是一个未保留的字符。 Java 选择一个未保留的字符作为分隔符是不明智的。当它这样做时,它至少应该在内部转义它,就好像该 char 是保留的一样。

关于Java - 特殊 URL 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8799296/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com