一个 jar 删除有关应用程序加载的详细警告信息

2022-09-04 08:37:50

我正在使用Maven,带有一个jar插件,但是当我运行one jar可执行文件时,我遇到了一堵警告墙,这是不可接受的。

我已经查看了一个jar上的所有可用资源,没有看到有关如何保留jar以便在运行时喷出大量警告的说明,有人解决了这个问题吗?

JarClassLoader: Warning: META-INF/LICENSE.txt in lib/commons-io-1.4.jar is hidden by lib/commons-collections-3.2.1.jar (with different bytecode)
JarClassLoader: Warning: META-INF/NOTICE.txt in lib/commons-io-1.4.jar is hidden by lib/commons-collections-3.2.1.jar (with different bytecode)
JarClassLoader: Warning: META-INF/LICENSE.txt in lib/commons-lang-2.4.jar is hidden by lib/commons-collections-3.2.1.jar (with different bytecode)
JarClassLoader: Warning: META-INF/NOTICE.txt in lib/commons-lang-2.4.jar is hidden by lib/commons-collections-3.2.1.jar (with different bytecode)

答案 1

我发现,如果你创建一个文件并将其放在运行时类路径的根目录中(即,你的项目.class文件结束的地方),它将被 one-jar Boot 类读取。此属性文件中的条目,例如:one-jar.properties

one-jar.silent=true

将完全抑制一个 jar 日志消息。

Boot 类查找的其他值为 和 。one-jar.infoone-jar.verbose

默认级别为 INFO。正如 Pascal Thivent 上面所指出的,您还可以使用命令的参数通过命令行设置 System 属性,但是如果您不想规定或记住这一点,则属性文件方法效果很好。-Djava


答案 2

似乎在“详细”模式下运行时会打印这些消息。我不明白的是,默认情况下,详细模式似乎没有被激活。

无论如何,您可以尝试在运行 one-jar 时将系统属性设置为:one-jar.verbosefalse

java -Done-jar.verbose=false -jar <one-jar.jar>

推荐