+
字符时,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