Невозможно понять URL для подключения чтения файла SVG - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть приложение Spring Boot v2.1.2.RELEASE.У меня есть файл в ../src/main/resources/icons/128/black/ae.png

, который я хочу прочитать, но я получил ошибку: Невозможно понять URL для подключения

@SpringBootApplication
public class SvgManagerApplication implements CommandLineRunner {

    public static void main(String[] args) {
        SpringApplication.run(SvgManagerApplication.class, args);
    }


    @Override
    public void run(String... args) throws Exception {      

        try {

            String parser = XMLResourceDescriptor.getXMLParserClassName();
            SAXSVGDocumentFactory f = new SAXSVGDocumentFactory(parser);
            Document doc = f.createDocument("classpath:icons/128/black/ae.svg");

            System.out.println(doc);

        } catch (IOException ex) {

            System.out.println(ex.getMessage());

        }
    }
}

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019

Вы смешиваете две разные рамки;classpath: связано с Spring, а SAXSVGDocumentFactory похоже с батиком (https://xmlgraphics.apache.org/batik/javadoc/org/apache/batik/anim/dom/SAXSVGDocumentFactory.html)

. Вы можете сделать это следующим образом:

@SpringBootApplication
public class SvgManagerApplication implements CommandLineRunner {

    public static void main(String[] args) {
        SpringApplication.run(SvgManagerApplication.class, args);
    }


    @Override
    public void run(String... args) throws Exception {      

        try {
        Resource svg = new ClassPathResource("icons/128/black/ae.png"); 
            String parser = XMLResourceDescriptor.getXMLParserClassName();
            SAXSVGDocumentFactory f = new SAXSVGDocumentFactory(parser);
            Document doc = f.createDocument(SVG_DOCUMENT_URI, svg.getInputStream());

            System.out.println(doc);

        } catch (IOException ex) {

            System.out.println(ex.getMessage());

        }
    }
}

Более подробную информацию о ресурсе можно найтиздесь https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/io/Resource.html,, а дополнительную информацию о ClassPathResource можно найти здесь https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/io/ClassPathResource.html

0 голосов
/ 07 февраля 2019

Вы можете попытаться получить путь следующим образом:

String path = SvgManagerApplication.class.getClassLoader().getResource("icons/128/black/ae.svg").getPath();
...