如何阻止外部库使用其消息污染应用程序输出?

问题描述

我用 Java 编写了一个控制台应用程序,它使用 Google Protocol Buffers 进行序列化。 但是,当使用该代码时,在库加载期间,它会输出一些关于非法反射访问操作的警告。

AFAIK,这是 Google 的一些小烦恼,不会真正影响任何事情,所以我希望我的应用程序不要将垃圾转储到输出。 同时,我显然希望我的应用能够正常输出自己的东西。

人们通常如何处理这样的事情? 处理这种具体情况的好方法是什么?

解决方法

最好的方法是添加一个记录器而不是使用标准的控制台输出。您可以阅读有关 slf4j 的信息。它比标准输出有很多优点。您可以拥有不同级别的日志——信息、调试、警告、错误等。因此您可以限制您阅读的信息量。此外,您将在文件中保留以前的输出,并且您还可以配置不同的 appender - 因此不同的类将它们的输出写入不同的文件。

基本上这是大多数java应用程序的首选方式,这是有原因的

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...