Ошибки Log4j2 при запуске Jar - PullRequest
0 голосов
/ 05 ноября 2019

При запуске моего приложения JavaFX через IntelliJ все хорошо. Пользовательский загрузчик Log4j2 загружается и все FXML анализируются правильно. Однако, когда приложение упаковано как JAR с Maven, appender не найден. Чтобы исправить это, атрибут packages="MyApp.util" включен в конфигурационный XML-файл журнала, указывая на пакет пользовательского приложения. Когда этот атрибут добавляется, приложение запускается при запуске с XMLStreamException: ParseError, ссылающимся на произвольную строку в файле FXML.

Кроме того, независимо от включения атрибута пакетов, версия log4j2 отображается как null null, когдазапуск Jar (в Intellij * Apache Log4j Core 2.12.1):
2019-11-05 10:24:38,666 JavaFX Application Thread DEBUG null null initializing configuration XmlConfiguration[location=/home/me/config/logging.xml]

Я гарантировал, что реализация ядра Log4j API + включена в файл Jar. В Jar включена внутренняя библиотека компании, в зависимости от Log4j 1.x, но я не уверен, что это может вызвать конфликты.

Log4j2 XML-конфигурация:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="trace" packages="MyApp.util">
    <Appenders>
        <Console name="Console" target="SYSTEM_ERR">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %logger{36} - %msg%n"/>
        </Console>
        <FXAppender name="JavaFXLogger">
            <PatternLayout pattern="%d{HH:mm:ss}   %msg%n"/>
            <ThresholdFilter level="warn"/>
        </FXAppender>
    </Appenders>
    <Loggers>
        <Logger name="MyApp.data.Acquisitioner" level="info"/>
        <Root level="debug">
            <AppenderRef ref="Console"/>
            <AppenderRef ref="JavaFXLogger"/>
        </Root>
    </Loggers>
</Configuration>

Трассировка стека:

10:24:38.931 DEBUG BoosterADTM.util.ConfigurationManager - Loaded configuration from /home/me/config/config.xml
javafx.fxml.LoadException: 
file:/home/me/MyApp.jar!/MyApp/views/TuneMeter.fxml:262

        at javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2601)
        at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2543)
        at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2441)
        at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2409)
        at company.fx.ViewLoader.<init>(ViewLoader.java:34)
        at company.fx.ViewLoader.<init>(ViewLoader.java:23)
        at MyApp.controller.MainTabsController.initViews(MainTabsController.java:79)
        at MyApp.controller.MainTabsController.initialize(MainTabsController.java:57)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:71)
        at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:275)
        at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2566)
        at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2441)
        at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2409)
        at company.fx.ViewLoader.<init>(ViewLoader.java:34)
        at company.fx.ViewLoader.<init>(ViewLoader.java:23)
        at MyApp.Main.start(Main.java:27)
        at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$419(LauncherImpl.java:863)
        at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$399(PlatformImpl.java:326)
        at com.sun.javafx.application.PlatformImpl.lambda$null$397(PlatformImpl.java:295)
        at java.security.AccessController.doPrivileged(Native Method)
        at com.sun.javafx.application.PlatformImpl.lambda$runLater$398(PlatformImpl.java:294)
        at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
        at com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method)
        at com.sun.glass.ui.gtk.GtkApplication.lambda$null$203(GtkApplication.java:139)
        at java.lang.Thread.run(Thread.java:748)
Caused by: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[262,49]
Message: Stream closed
        at com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.next(XMLStreamReaderImpl.java:599)
        at javax.xml.stream.util.StreamReaderDelegate.next(StreamReaderDelegate.java:88)
        at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2513)
        ... 30 more

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...