我正在尝试使用 jena 库为语义网络编写一个 java 网络爬虫。我已经使用 Netbeans 构建了项目。我收到两个错误:
实例化SLF4J LoggerFactory失败 报告异常: java.lang.NoClassDefFoundError: org/apache/log4j/Level
无法初始化类 com.hp.hpl.jena.rdf.model.impl.ModelCom 在 org.slf4j.LoggerFactory.bind(LoggerFactory.java:128)
我已经包含了
slf4j-api
和 slf4j-log
这两个库。
您还应该包含
log4j
库,因为 slf4j-log4j
只是一个静态活页夹。
您应该在类路径中包含
slf4j-api-x.x.x.jar
和 slf4j-simple-x.x.x.jar
。
我尝试了所有排列和组合,但最终 slf4j-api- 和 slf4j-simple- 效果很好。
如错误提示:
实例化失败SLF4JLoggerFactory
您需要将相应的
slf4j-*-*.jar
绑定文件放入您的 classpath 文件夹中。
如果存在,您可以通过
locate slf4j
找到它们。
从 SLF4J 版本 1.6.0 开始,如果在类路径上找不到绑定,则 slf4j-api 将默认为无操作实现,丢弃所有日志请求。
如果使用 Tomcat,您可以将这些文件复制到
/usr/share/tomcat7/lib
或您的 webapp 文件夹 /var/lib/tomcat7/webapps/*/WEB-INF/lib
。
如果您正在使用 Solr 或者您想使用其中的文件(默认情况下包含),您可以在
dist/solrj-lib
和 example/lib/ext
中找到它们。
就我而言,当我向项目中添加 module-info.java 时,发生了
Failed to instantiate SLF4J LoggerFactory
。解决方案是将这两行添加到我的 module-info.java 文件中:
requires org.apache.logging.log4j;
requires org.apache.logging.log4j.core;
如果它可以帮助像我一样遇到这个问题的人。