由于记录器的原因,servlet出现JinJava未捕获异常



尝试在AppEngine上使用JinJava时,我得到了以下异常

Uncaught exception from servlet
java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
    at com.hubspot.jinjava.util.Logging.<clinit>(Logging.java:23)
    at com.hubspot.jinjava.lib.SimpleLibrary.register(SimpleLibrary.java:59)
    at com.hubspot.jinjava.lib.SimpleLibrary.registerClasses(SimpleLibrary.java:49)
    at com.hubspot.jinjava.lib.exptest.ExpTestLibrary.registerDefaults(ExpTestLibrary.java:13)
    at com.hubspot.jinjava.lib.SimpleLibrary.<init>(SimpleLibrary.java:34)
    at com.hubspot.jinjava.lib.exptest.ExpTestLibrary.<init>(ExpTestLibrary.java:8)
    at com.hubspot.jinjava.interpret.Context.<init>(Context.java:54)
    at com.hubspot.jinjava.interpret.Context.<init>(Context.java:47)
    at com.hubspot.jinjava.Jinjava.<init>(Jinjava.java:81)
    at com.hubspot.jinjava.Jinjava.<init>(Jinjava.java:71)

我的appengin-web.xml文件已经随此一起提供

<property name="java.util.logging.config.file" value="WEB-INF/logging.properties"/>
        <!--I add these below -->
        <property name="java.util.logging.config.file"
                  value="WEB-INF/java-util-logging.properties"/>
        <property name="os.version" value="1.0.GAE whatever"/>
        <property name="os.arch" value="GAE whatever"/>
...

但如果我注释掉

这些行,那就没有什么区别了

看起来jinjava使用slf4j进行日志记录,但无法在类路径中找到类。这种类型的错误通常意味着,您缺少依赖性jar。

当在AppEngine上通过slf4j登录时,您需要两个依赖项:

有了maven,依赖关系可能看起来像这个

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.7</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-jdk14</artifactId>
        <version>1.7.8</version>
    </dependency>

但是您可以手动添加slf4j-api和slf4j-jdk14。只需从您喜欢的jar源代码下载它们,并将它们添加到您的构建路径中。

最新更新