Logback + Janino + проблема со смолой с java.lang.NoSuchMethodError

Привет, я использую следующую версию 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 в 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) ch 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: Genericjjjj 143) на ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:106) в ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:56) в ch.qos.logback.classit.til configureByResource(ContextInitializer.java:75) в ch.qos.logback.classic.util.ContextInitializer.autoConfig(ContextInitializer.java:148) в org.slf4j.impl.StaticLoggerBinder.init(StaticLoggerBinder.java.sf на at)..impl.StaticLoggerBinder.(StaticLoggerBinder.java:55) по адресу org.slf4j.LoggerFactory.bind(LoggerFactory.java:128) по адресу org.slf4j. (LoggerFactory.java:295) в org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:269) в org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:281)

Любые идеи, почему это бросает эту ошибку?

2 ответа

Следует также отметить, что они изменили свой идентификатор группы с janino на org.codehasu.janino, поэтому вам нужно обновить не только версию.

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

setImplementedInterfaces(Class[]) метод является частью ClassBodyEvaluator класс в Янино 2.6.1. Проверьте свой путь к классу, чтобы увидеть, скрывается ли где-то другая версия Janino. Существует очень высокая вероятность того, что ваш путь к классу содержит другую версию Janino.

Другие вопросы по тегам