如何停止在引用 NetcdfAll 库的 Eclipse 上加载 SLF4J

How to stop SLF4J loading on Eclipse with NetcdfAll library referenced

我目前正在 eclipse 上开发一个 Java 项目。在项目的早期阶段,我尝试使用记录器来记录不同的信息,但我最终放弃了它的使用。

现在,每次我 运行 我的应用程序作为 "Java Application" 它都会在控制台上打印此消息。

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

我试过关闭项目并重建它,但它一直在打印。还检查了我的 class 导入和构建路径引用,似乎没有任何问题在那里造成。这与 IDE?

有关

还必须提到的是,我没有将依赖管理器用作 maven,并且我当前使用的唯一引用库是 netcdfAll-4.6.jar.

我的第一个想法显然是依赖的问题,但问题是在SLF4J相关的构建路径上找不到依赖。

您的项目中似乎有 SLF4J jar,如果您不再需要 slf4j,请检查您的 maven 依赖项(或 gradle,或 ant)并从那里删除 sl4j 依赖项。如果你不使用依赖管理器,检查你的项目的 jar,也许你有 slf4j jar 文件。

作为Maxim Petrusevich pointed in his answer the problem is caused by the netcdfAll-4.6.jar, and the dependency can be seen as he mentioned. More information about this can be found on NetCDF-Java Build Dependencies

由于 netcdf 库强制使用记录器,解决该问题的一种可能方法是将 SLF4J 依赖项添加到构建路径中。为此,需要将以下库添加到构建路径中:

  • slf4j-api-1.7.25.jar
  • log4j-api-2.10.0.jar
  • log4j-slf4j-impl-2.0.2.jar
  • log4j-core-2.10.0.jar

如果您遵循此解决方案,将需要一个配置文件来配置记录器。可以找到一些例子 here.

其他不强迫您使用记录器的可能解决方案是将 slf4j-jdk14.jar which only weights 8kB. This solution has been found by MSD Software 添加到构建路径,并且已经过测试并且有效。