猛禽洛的程式筆記庫

[Java] 解決Log4j2在Maven下打包jar執行後遇到的警告訊息:WARNING: sun.reflect.Reflection.getCallerClass is not supported. This will impact performance.

最近把JAVA版本從8升到17後,我的Log4j2就冒出了一行警告訊息:

WARNING: sun.reflect.Reflection.getCallerClass is not supported. This will impact performance.

原因:pom.xml少了<Multi-Release>參數。

修改pom.xml,於<transformer>中加入<Multi-Release>標籤參數:

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-shade-plugin</artifactId>
      <version>3.2.2</version>
      <executions>
        <execution>
          <phase>package</phase>
          <goals>
            <goal>shade</goal>
          </goals>
          <configuration>
            <transformers>
              <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                <mainClass>com.lugia.MainApplication</mainClass>
                <!-- 加入此區塊 -->
                <manifestEntries>
                  <Multi-Release>true</Multi-Release>
                </manifestEntries>
              </transformer>
            </transformers>
          </configuration>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

<Multi-Release>設為true讓Log4j2知道可以用新版本的Java下去運作,以免用舊方法降低速度。

收工。

-END-

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *