Класс getCaller Log4j не найден в Java 11 - PullRequest
1 голос
/ 27 апреля 2020

Все работало просто отлично, пока я недавно не обновил до Java 11. Я столкнулся с несколькими проблемами, мне удалось решить большинство из них, но я не могу исправить ошибку Log4j при вызове метода LogManager.getLogger(). Я нашел этот поток и включил свойство Multi-Release в файл манифеста, но Log4J по-прежнему зависал.

Я включил Log4J в библиотеку, которую я написал, а затем упаковал эту библиотеку, используя плагин maven shade, а затем я включил мою упакованную библиотеку в мое реальное приложение.

Я получаю ошибку:

Exception in thread "main" java.lang.UnsupportedOperationException: No class provided, and an appropriate one cannot be found.
    at org.apache.logging.log4j.LogManager.callerClass(LogManager.java:576)
    at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:601)
    at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:588)

Конфигурация оттенка в моем pom-файле для библиотеки:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>3.2.3</version>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>shade</goal>
            </goals>
            <configuration>
                <filters>
                    <filter>
                        <artifact>*:*</artifact>
                        <excludes>
                            <exclude>META-INF/*.SF</exclude>
                            <exclude>META-INF/*.DSA</exclude>
                            <exclude>META-INF/*.RSA</exclude>
                        </excludes>
                    </filter>
                </filters>
                <transformers>
                    <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                        <manifestEntries>
                            <Multi-Release>true</Multi-Release>
                        </manifestEntries>
                    </transformer>
                    <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
                </transformers>
                <finalName>uber-${project.artifactId}-${project.version}</finalName>
            </configuration>
        </execution>
    </executions>
</plugin>

Файл манифеста в файле библиотеки .jar:

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Apache Maven 3.6.3
Build-Jdk: 11.0.7
Multi-Release: true
...