JarURLConnection.connect
在JAR文件包含FileNotFoundException
字符时抛出+
。
在/Users/pp/git/Repo/build/libs/repo-1.1.0+1.jar中找不到JAR条目BOOT-INF / classes!/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:文件:/Users/pp/git/Repo/build/libs/repo-1.1.0.jar!/ BOOT-INF / classes!/sam.wsdl
但是当我的jar包含+
时,会抛出FNF异常。
jar:文件:/Users/pp/git/Repo/build/libs/repo-1.1.0+1.jar!/ BOOT-INF / classes!/sam.wsdl
答案 0 :(得分:1)
URL中的+
字符实际上是一个编码的空格(ASCII SP / 0x20)字符。
如果您希望URL匹配文件名中带有+
的文件,则+
字符必须被转义;例如
jar:file:/Users/pp/git/Repo/build/libs/repo-1.1.0%2B1.jar!/BOOT-INF/classes!/sam.wsdl