Не могу прочитать XML при запуске из исполняемого файла .jar - PullRequest
0 голосов
/ 31 октября 2019

Я сохраняю некоторые настройки в xml insinde моей папки ресурсов. Это все работает нормально, пока я не попытаюсь запустить свое программное обеспечение в моем исполняемом файле .jar, где оно не может его скомпилировать.

Я добавил ресурс в свой файл pom.xml и, если я проверю свой файл .jar, я смогусм. XML в папке классов. Когда я отлаживаю свой .jar-файл, в документе doc = dBuilder.parse (xml) освобождается исключение: он не может найти файл:

java.io.FileNotFoundException: C: \ Users \ dante \ IdeaProjects \BACbrowser \ file: \ C: \ Users \ dante \ IdeaProjects \ BACbrowser \ backend \ target \ backend-0.0.1-SNAPSHOT.jar! \ BOOT-INF \ classes! \ DefaultSettings (Синтаксис определения даты, даты, даты и даты)ist falsch)

public void readXMLSettings() {
    try {

        File xml = getXmlSettingsFile();
        DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
        Document doc = dBuilder.parse(xml);

        setPort((doc.getElementsByTagName("port").item(0).getTextContent()));
        setSiteName(doc.getElementsByTagName("siteName").item(0).getTextContent());
        setSiteDescription(doc.getElementsByTagName("siteDescription").item(0).getTextContent());
        setBacnetSeparator(doc.getElementsByTagName("bacnetSeparator").item(0).getTextContent());

    } catch (Exception e) {
        System.err.println("Can't read XML settings");
        ;
    }
}

private File getXmlSettingsFile() {
    ClassLoader classLoader = getClass().getClassLoader();
    URL resource = classLoader.getResource("defaultSettings");
    if (resource == null) {
        throw new IllegalArgumentException("file is not found!");
    } else {
        return new File(resource.getFile());
    }

}

1 Ответ

0 голосов
/ 31 октября 2019

Использование application.properties из Spring Boot и прямое сохранение настроек там работало просто отлично!

spring.boot.config.settings.port = BAC0
spring.boot.config.settings.siteName = Anlage
spring.boot.config.settings.siteDescription = Site
spring.boot.config.settings.bacnetSeparator = '

Добавив префикс @ConfigurationProperties(prefix = "spring.boot.config.settings") в моем классе, я смог получить к ним доступ без проблем.

private String port;
private String siteName;
private String siteDescription;
private String bacnetSeparator;

public String getPort() {
    return port;
}

public void setPort(String port) {
    this.port = port;
}

public String getSiteName() {
    return siteName;
}

public void setSiteName(String siteName) {
    this.siteName = siteName;
}

public String getSiteDescription() {
    return siteDescription;
}

public void setSiteDescription(String siteDescription) {
    this.siteDescription = siteDescription;
}

public String getBacnetSeparator() {
    return bacnetSeparator;
}

public void setBacnetSeparator(String bacnetSeparator) {
    this.bacnetSeparator = bacnetSeparator;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...