JarURLConnection.connect выбрасывает исключение java.io.FileNotFoundException, когда URL имеет "+" - PullRequest
0 голосов
/ 02 ноября 2018

JarURLConnection.connect, выбрасывая FileNotFoundException, если файл JAR содержит + char.

Запись JAR BOOT-INF / classes! /Sam.wsdl не найдена в /Users/pp/git/Repo/build/libs/repo-1.1.0+1.jar

Хранилище сервисов:

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

баночка: Файл: /Users/pp/git/Repo/build/libs/repo-1.1.0.jar / BOOT-INF / классы /sam.wsdl

!

Но когда у меня есть баночка, + выдает исключение FNF.

баночка: Файл: /Users/pp/git/Repo/build/libs/repo-1.1.0+1.jar / BOOT-INF / классы /sam.wsdl

!

1 Ответ

0 голосов
/ 03 ноября 2018

Символ + в URL - это фактически кодированный пробел (ASCII SP / 0x20).

Если вы хотите, чтобы URL соответствовал файлу с + в имени файла, тогда символ + должен быть экранирован в процентах; например,

jar:file:/Users/pp/git/Repo/build/libs/repo-1.1.0%2B1.jar!/BOOT-INF/classes!/sam.wsdl
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...