错误内容
ERROR StatusLogger Unrecognized format specifier
ERROR StatusLogger Unrecognized conversion specifier [d] starting at position 16 in conversion pattern.
尝试解决文案:
java程序如何打包为jar,以及避免log4j2在打包后出现异常
上述参考文案帮助我找到了解决问题的思路,感谢作者~ 但是并没有最终我的解决问题。我的问题:使用shade+assembly打包后,通过java -jar命令执行jar包后,总是报“找不到或无法加载主类”。暂时不知道出现该问题的原因,如有大佬知道,还请不吝赐教!(怀疑跟assembly的3.0以上版本有关,然后本人某个配置可能没配对)
本人解决文案
1、关键点:上述问题根本原因是有多个jar包中包含Log4j2Plugins.dat文件,在IDEA中可双击shift查找哪些jar包中包含了Log4j2Plugins.dat文件,并将非log4j-core包的其他冲突jar包exclusion掉
2、使用maven工具对root模块clean后再install
3、重新打包即可
参考pom配置
<plugin>
<!-- NOTE: 不须要设置groupId,由于默认为org.apache.maven.plugins -->
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4.1</version>
<configuration>
<descriptor>src/main/assembly/assembly.xml</descriptor>
<archive>
<manifest>
<!-- 设置主类-->
<mainClass>xx.Main</mainClass>
<!-- 将版本信息写入MANIFEST.MF -->
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<!-- this is used for inheritance merges -->
<id>make-assembly</id>
<!-- 将assembly绑定到package阶段 -->
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
参考src/main/assembly/assembly.xml文件
<assembly
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd">
<id>fat-tests</id>
<formats>
<format>jar</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<dependencySets>
<dependencySet>
<outputDirectory>/</outputDirectory>
<useProjectArtifact>true</useProjectArtifact>
<unpack>true</unpack>
<scope>test</scope>
</dependencySet>
</dependencySets>
<fileSets>
<fileSet>
<directory>${project.build.directory}/test-classes</directory>
<outputDirectory>/</outputDirectory>
<includes>
<include>**/*.class</include>
</includes>
<useDefaultExcludes>true</useDefaultExcludes>
</fileSet>
</fileSets>
</assembly>