2013-03-26 73 views
0

Привет Я использую следующую версию Logback и Janino:Logback + Janino + смола с java.lang.NoSuchMethodError

<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> Conditon является:

<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/языки/Класс;) 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) at ch.qos.logback.core.joran.spi.Interpreter.startElement (Interpreter.java:148) at ch.qos.logback.core .joran.spi.Interpreter.startElement (Interpreter.java:130) at ch.qos.logback.core.joran.spi.EventPlayer.play (EventPlayer.java:50) at c h.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) at org.slf4j.LoggerFactory.bind (LoggerFactory.java:12 8) at org.slf4j.LoggerFactory.performInitialization (LoggerFactory.java:107) at org.slf4j.LoggerFactory.getILoggerFactory (LoggerFactory.java:295) at org.slf4j.LoggerFactory.getLogger (LoggerFactory.java:269) at org.slf4j.LoggerFactory.getLogger (LoggerFactory.java:281)

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

ответ

4

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

+0

Ваша подсказка помогла, кажется, была неправильная версия janino jar. благодаря – Suresh

1

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

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