Logback + Janino + Resin issue with java.lang.NoSuchMethodEr



你好,我正在使用以下版本的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"/> 

和日志配置使用<if>条件为:

<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 logger的级别设置为INFO实例化[ch.qos.logback.classic.LoggerContext]失败报告例外:java.lang.NoSuchMethodError: org.codehaus.janino.ClassBodyEvaluator.setImplementedInterfaces ([Ljava/lang/类;)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)

还应该注意他们将组id从janino更改为org.codehasu。Janino 所以你需要更新的不仅仅是版本。

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

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

相关内容

最新更新