【问题标题】:Logback + Janino + Resin issue with java.lang.NoSuchMethodErrorjava.lang.NoSuchMethodError 的 Logback + Janino + Resin 问题
【发布时间】:2013-03-26 17:46:04
【问题描述】:

您好,我正在使用以下版本的 logback 和 Janino:

  <dependency org="ch.qos.logback" name="logback-core" rev="1.0.11" conf="runtime"/>
  <dependency org="ch.qos.logback" name="logback-classic" rev="1.0.11" conf="runtime"/>
  <dependency org="org.codehaus.janino" name="janino" rev="2.6.1" conf="runtime"/> 

使用&lt;if&gt; 条件的日志记录配置是:

<root level="INFO">
    <if condition='property("xxx").contains("dev")'>
      <then>
        <appender-ref ref="dev" />
      </then>
    </if>
</root> 

我看到的错误如下:

7:38:54,729 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - 将 ROOT 记录器的级别设置为 INFO 无法实例化 [ch.qos.logback.classic.LoggerContext] 报告的异常: java.lang.NoSuchMethodError: org.codehaus.janino.ClassBodyEvaluator.setImplementedInterfaces([Ljava/lang/Class;)V 在 ch.qos.logback.core.joran.conditional.PropertyEvalScriptBuilder.build(PropertyEvalScriptBuilder.java:48) 在 ch.qos.logback.core.joran.conditional.IfAction.begin(IfAction.java:67) 在 ch.qos.logback.core.joran.spi.Interpreter.callBeginAction(Interpreter.java:276) 在 ch.qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java:148) 在 ch.qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java:130) 在 ch.qos.logback.core.joran.spi.EventPlayer.play(EventPlayer.java:50) 在 ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:157) 在 ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:143) 在 ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:106) 在 ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:56) 在 ch.qos.logback.classic.util.ContextInitializer.configureByResource(ContextInitializer.java:75) 在 ch.qos.logback.classic.util.ContextInitializer.autoConfig(ContextInitializer.java:148) 在 org.slf4j.impl.StaticLoggerBinder.init(StaticLoggerBinder.java:85) 在 org.slf4j.impl.StaticLoggerBinder.(StaticLoggerBinder.java:55) 在 org.slf4j.LoggerFactory.bind(LoggerFactory.java:128) 在 org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:107) 在 org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:295) 在 org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:269) 在 org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:281)

任何想法为什么会抛出这个错误?

【问题讨论】:

    标签: logging slf4j logback resin janino


    【解决方案1】:

    还应注意他们将组 ID 从 janino 更改为 org.codehasu.janino,因此您需要更新的不仅仅是版本。

    ```
    <dependency>
        <groupId>org.codehaus.janino</groupId>
        <artifactId>janino</artifactId>
        <version>2.7.8</version>
    </dependency>
    ```
    

    【讨论】:

      【解决方案2】:

      setImplementedInterfaces(Class[]) 方法是 janino 2.6.1 中 ClassBodyEvaluator 类的一部分。检查你的类路径,看看是否有不同版本的 Janino 潜伏在某个地方。您的类路径很可能包含不同版本的 Janino。

      【讨论】:

      • 您的提示有所帮助,似乎 janino jar 的版本错误。谢谢
      猜你喜欢
      • 2017-07-11
      • 2011-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-21
      • 2022-08-18
      • 2015-04-19
      • 1970-01-01
      相关资源
      最近更新 更多