如何在java中禁用运行时警告?

时间:2009-09-25 16:47:15

标签: java runtime warnings

我在java程序中使用jar文件,它在运行时生成警告。但我不希望我的客户看到这些警告。 如何禁用这些警告。

警告如下:

Sep 25, 2009 10:10:33 PM com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl notify
WARNING: Expected content type of 'application/javascript' or 'application/ecmascript' for remotely loaded JavaScript element at 'http://www.craigslist.org/js/jquery.js', but got 'application/x-javascript'.

6 个答案:

答案 0 :(得分:7)

从消息的外观来看,您正在使用HtmlUnit which uses Commons Logging来记录消息。除非您将Commons Logging配置为写入文件,否则日志消息将由Commons Logging的简单记录器记录,该记录将写入控制台。

如果您想让错误消息消失,您可以采用以下任一选项:

  1. 配置Commons Logging以写入磁盘上的文件(使用log4j)。
  2. 将控制台输出重定向到/ dev / null或其等效项,如sal pinpointed。

答案 1 :(得分:2)

更简单的方法是,无需将Log4j作为依赖项添加,只需重定向STDERR即可。

System.setErr(new PrintStream("/dev/null"));

这就是你真正需要的。

注意:确保在完成HtmlUnit后重置流:

final PrintStream err = new PrintStream(System.err);
System.setErr(new PrintStream("/dev/null"));

// ...

System.setErr(err);

答案 2 :(得分:1)

假设这些是日志消息,您可以配置记录器将所有内容写入null或/ dev / null

在路径中放置这样的文件可能有帮助

<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd" >
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

    <appender name="NULL" class="org.apache.log4j.FileAppender">
        <param name="File" value="/dev/null"/>
    </appender>

   <logger name="com.gargoylesoftware.htmlunit">
       <level value="FATAL"/>
       <appender-ref ref="NULL"/>
   </logger>

</log4j:configuration>

答案 3 :(得分:1)

只需复制Vineet发布链接的第一行:

  

如果您没有显式配置commons日志记录以使用LOG4J或其他日志记录框架,那么它将使用简单的记录器。使用简单记录器时,可以通过设置以下系统属性来更改默认日志记录级别:

System.getProperties().put("org.apache.commons.logging.simplelog.defaultlog","fatal");

在程序开头的某处添加此代码。

答案 4 :(得分:1)

由于OP不断询问如何重定向到/ dev / null: 你可以通过调用System.setOutSystem.setErr来传递一个类似的效果,传入一个PrintStream,它不会对它给出的输出做任何事情。

这是一个可怕的黑客攻击,以前的答案远比清晰得多。

答案 5 :(得分:0)

我发现HtmlUnit不包含log4j实现,只有commons记录“interface”(和抽象类)。一旦你在路径上扔了log4j.jar,HtmlUnit就会表现得更好,并且尊重它的配置。