0

嗨,我正在使用以下版本的 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 |-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。 ch.qos.logback.core 中的 EventPlayer.play(EventPlayer.java:50)。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) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:269) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:281)

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

4

2 回答 2

5

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

```
<dependency>
    <groupId>org.codehaus.janino</groupId>
    <artifactId>janino</artifactId>
    <version>2.7.8</version>
</dependency>
```
于 2016-01-25T18:04:10.090 回答
4

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

于 2013-03-26T18:16:30.773 回答