使用 Gate 进行日志记录

Get logging working with Gate

我是 Java 和 Gate 的新手,所以我将提供详细的步骤。我试图在我的 java 应用程序中使用 Stanford pos tagger,但它给了我这个错误:

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.
Reading POS tagger model from file:/home/khaled/smartgit/projects/MicroblogsAnnotator/GATE_Developer_8.4.1/plugins/Stanford_CoreNLP/resourcs/english-left3words-distsim.tagger ... done [2.6 sec].

这里的另一个问题是我下载了 "slf4j-log4j12.jar" 并试图将其包含在我的 class 路径中。我不确定这是否是添加它的正确方法,但是我从 netbeans 中单击了

project->Properties->Libraries->add Jar

运行 现在又给了我另一个错误:

java.lang.NoClassDefFoundError: org/slf4j/spi/LoggerFactoryBinder
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
    at java.net.URLClassLoader.access0(URLClassLoader.java:73)
    at java.net.URLClassLoader.run(URLClassLoader.java:368)
    at java.net.URLClassLoader.run(URLClassLoader.java:362)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:338)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at gate.util.GateClassLoader.loadClass(GateClassLoader.java:183)
    at gate.util.GateClassLoader.loadClass(GateClassLoader.java:142)
    at org.slf4j.LoggerFactory.bind(LoggerFactory.java:141)
    at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:120)
    at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:331)
    at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:283)
    at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:304)
    at edu.stanford.nlp.io.IOUtils.<clinit>(IOUtils.java:42)
    at edu.stanford.nlp.tagger.maxent.MaxentTagger.readModelAndInit(MaxentTagger.java:765)
    at edu.stanford.nlp.tagger.maxent.MaxentTagger.<init>(MaxentTagger.java:298)
    at edu.stanford.nlp.tagger.maxent.MaxentTagger.<init>(MaxentTagger.java:263)
    at gate.stanford.Tagger.init(Tagger.java:129)
    at gate.Factory.createResource(Factory.java:432)
    at gate.Factory.createResource(Factory.java:139)
    at gate.Factory.createResource(Factory.java:121)
    at MicroblogsAnnotator.GateTool.CreateController(GateTool.java:110)
    at MicroblogsAnnotator.GateTool.TwitIE(GateTool.java:185)
    at MicroblogsAnnotator.GateTool.RunTwitIE(GateTool.java:207)
    at MicroblogsAnnotator.MicroblogsAnnotator.main(MicroblogsAnnotator.java:36)
Caused by: java.lang.ClassNotFoundException: org.slf4j.spi.LoggerFactoryBinder
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:338)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 31 more
Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/spi/LoggerFactoryBinder
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
    at java.net.URLClassLoader.access0(URLClassLoader.java:73)
    at java.net.URLClassLoader.run(URLClassLoader.java:368)
    at java.net.URLClassLoader.run(URLClassLoader.java:362)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:338)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at gate.util.GateClassLoader.loadClass(GateClassLoader.java:183)
    at gate.util.GateClassLoader.loadClass(GateClassLoader.java:142)
    at org.slf4j.LoggerFactory.bind(LoggerFactory.java:141)
    at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:120)
    at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:331)
    at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:283)
    at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:304)
    at edu.stanford.nlp.io.IOUtils.<clinit>(IOUtils.java:42)
    at edu.stanford.nlp.tagger.maxent.MaxentTagger.readModelAndInit(MaxentTagger.java:765)
    at edu.stanford.nlp.tagger.maxent.MaxentTagger.<init>(MaxentTagger.java:298)
    at edu.stanford.nlp.tagger.maxent.MaxentTagger.<init>(MaxentTagger.java:263)
    at gate.stanford.Tagger.init(Tagger.java:129)
    at gate.Factory.createResource(Factory.java:432)
    at gate.Factory.createResource(Factory.java:139)
    at gate.Factory.createResource(Factory.java:121)
    at MicroblogsAnnotator.GateTool.CreateController(GateTool.java:110)
    at MicroblogsAnnotator.GateTool.TwitIE(GateTool.java:185)
    at MicroblogsAnnotator.GateTool.RunTwitIE(GateTool.java:207)
    at MicroblogsAnnotator.MicroblogsAnnotator.main(MicroblogsAnnotator.java:36)
Caused by: java.lang.ClassNotFoundException: org.slf4j.spi.LoggerFactoryBinder
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:338)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 31 more

您快完成了,您还需要包括 slf4j-api.jar

然后可能需要一个 log4j 配置文件,以防你还没有...