one-jar删除有关应用程序负载的详细警告信息

我正在使用Maven,使用one-jar插件,但是当我运行一个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) 

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

 one-jar.silent=true 

将完全禁止一个jar日志消息。

Boot类寻找的其他值是one-jar.infoone-jar.verbose

默认级别为INFO。 正如Pascal Thivent所指出的那样,你也可以通过命令行使用java命令的-D参数设置一个System属性,但如果你不想要规定或记住它,那么属性文件方法效果很好。

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

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

 java -Done-jar.verbose=false -jar  

关于最新和最伟大的One-Jar v0.97:问题出在那里。 实际上需要将’one -jar.properties’文件放入最终jar的根目录中。 当然,它会有一行读取, one-jar.silent=true 。 这可以通过在任务中设置类似在Ant中完成。

也可以使用java -Done-jar.silent=true -jar foo-jar-made-by-one-jar.jar命令将java -Done-jar.silent=true -jar foo-jar-made-by-one-jar.jar命令行。

尽管如此,在安静之前它仍然会报告一行是从One-Jar内部Boot类加载属性。 如果不更改源代码,则无法在Boot.java中从第317行开始更改此方法,其中方法initializeProperties记录加载/合并操作。 请参阅One-Jar错误跟踪器中的SourceForge上的 错误ID 3609329 ,我提供了快速修复。

简介:通过添加one-jar.properties文件,除了一行无关日志记录之外的所有文件都将被删除。 这应该可以帮助Maven用户找到解决方法。

这在新版Maven one-jar插件中要好得多。

添加插件存储库:

   one-jar http://onejar-maven-plugin.googlecode.com/svn/mavenrepo  

并在插件定义中使用1.4.4版。

我发现我需要使用版本1.4.5 (1.4.4不起作用),然后建议将one -jar.properties文件放在我的jar文件的根目录下,单行读取one-jar.silent=true jar one-jar.silent=true为我工作。

正如之前有人建议的那样,我从1.4.3升级到1.4.4并达成了协议

有两个地方可以获得one-jar插件。

  1. https://github.com/jolira/onejar-maven-plugin
  2. http://code.google.com/p/onejar-maven-plugin/

第一个声称只是从Maven的主存储库提供的第二个副本。 我被鼓励使用这个,因为它不需要指定第二个需要的额外插件存储库。 然而,当我切换到使用第二个(官方的)时,这个问题就消失了。

注意 – 传递-Done-jar.verbose = false对我有用,但是当在文件one-jar.properties中设置时,如上所述。

很久以前我提交了一个补丁,它只是使默认行为无声。

  public static final int LOGLEVEL_VERBOSE = 5; // Loglevel for all loggers. - private static int loglevel = LOGLEVEL_INFO; + private static int loglevel = LOGLEVEL_NONE; private final String prefix; 

AFAIK,从未应用过。 最近我修复了另一个问题,所以我把修正案放在这里:

https://github.com/nsoft/uno-jar

请多次重读“许可证”中的“原样,无保修”部分:)

没有修改源代码就没有办法做到这一点