JarURLConnection.connect throwing java.io.FileNotFoundException 当 URL 有"+"


当JAR文件包含+字符时,JarURLConnection.connect抛出FileNotFoundException

JAR条目BOOT-INF/classes/在/Users/pp/git/Repo/build/libs/Repo-1.1.0+1.jar 中找不到sam.wsdl

服务存储库:

import java.io.IOException;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
import org.springframework.core.io.ClassPathResource;
public class SampleService extends Service {
public SampleService() throws IOException {
super(new ClassPathResource("sam.wsdl", SampleService.class.getClassLoader()).getURL(), new QName("qname", "serv"));
}
}

new ClassPathResource("sam.wsdl", SampleService.class.getClassLoader()).getURL()解析为URL 时,此代码运行良好

jar:file:/Users/pp/git/Repo/build/libs/Repo-1.1.0.jar/BOOT-INF/classes/sam.wsdl

但是当我的jar包含+时抛出FNF异常。

jar:file:/Users/pp/git/Repo/build/libs/report-1.1.0+1.jar/BOOT-INF/classes/sam.wsdl

URL中的+字符实际上是一个编码的空格(ASCII SP/0x20(字符。

如果您希望URL与文件名中的+相匹配,则+字符需要进行百分比转义;例如

jar:file:/Users/pp/git/Repo/build/libs/repo-1.1.0%2B1.jar!/BOOT-INF/classes!/sam.wsdl

相关内容

  • 没有找到相关文章

最新更新