URL为“ +”时,JarURLConnection.connect引发java.io.FileNotFoundException

时间:2018-11-02 19:37:23

标签: java web-services spring-boot

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

1 个答案:

答案 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