Я получаю несколько предупреждений привязки SLF4J и обработчиков ошибок запуска и NoSuchMethodError при использовании JAX-WS - PullRequest
0 голосов
/ 23 декабря 2011

Я получаю несколько предупреждений привязки SLF4J и Ошибка запуска обработчиков и NoSuchMethodError: org.slf4j.spi.LocationAwareLogger.log (Lorg / slf4j / Marker; Ljava / языки / String; ILjava / языки / Строка; Ljava / языки / Throwable;) V * +1007 *

Все было хорошо, как только я начал использовать JAX-WS, все это дело появилось.

Один из моих коллег получил ту же ошибку, но как только он снял банку (jcl-over-slf4j-1.5.8), теперь он в порядке,

Но я попробовал то же самое, не работая для меня.

Я попытался удалить следующие jar-файлы один за другим в моем classpath 1.slf4j-api-1.6.1.jar 2. slf4j-log4j12-1.6.1.jar и 3.slf4j-simple-1.5.8. банка, но без эффекта.

Когда я попробовал maven clean перед запуском Jetty, он показывал ошибку сборки и не смог удалить (xmlsec-1.4.4.jar), я вручную удалил этот jar-файл, который ничего не собирал в моем репозитории .M2.

Вот вывод консоли:

        2011-12-23 08:44:55.765:INFO::jetty-6.1.26
    SLF4J: Class path contains multiple SLF4J bindings.
    SLF4J: Found binding in [jar:file:/C:/My_workspace/my_portal            /MyPortal/trunk/MyPortalWebApp/src/main/webapp/WEB-INF/lib/slf4j-        log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/C:/My_workspace/MyPortal/trunk/MyPortalWebApp/src/main/webapp/WEB-INF/lib/slf4j-simple-1.5.8.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
2011-12-23 08:44:57.140:INFO:/MyPortalWebApp:Initializing Spring root WebApplicationContext
2011-12-23 08:44:57.140:WARN::failed org.mortbay.jetty.webapp.WebAppContext@c4fe76    {/MyPortalWebApp,C:\My_workspace\MyPortal\trunk\MyPortalWebApp\src\main\webapp}: java.lang.NoSuchMethodError: org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;Ljava/lang/Throwable;)V
2011-12-23 08:44:57.140:WARN::Error starting handlers
java.lang.NoSuchMethodError: org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;Ljava/lang/Throwable;)V
at org.apache.commons.logging.impl.SLF4JLocationAwareLog.info(SLF4JLocationAwareLog.java:159)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:187)
at org.springframework.web.context.ContextLoaderListener.contextInitialized        (ContextLoaderListener.java:47)
at org.mortbay.jetty.handler.ContextHandler.startContext(ContextHandler.java:549)
at org.mortbay.jetty.servlet.Context.startContext(Context.java:136)
at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1282)
at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:518)
at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:499)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
at org.mortbay.jetty.Server.doStart(Server.java:224)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at runjettyrun.Bootstrap.main(Bootstrap.java:82)

Пожалуйста, дайте мне некоторую информацию. Я пробовал много перестановок, но получал такой же (как и выше) вывод при запуске Jetty.

Ответы [ 3 ]

1 голос
/ 05 февраля 2013

Maven включает в себя автоматически разные версии slf4j-api и slf4j-log4j или slf4j-logging. Вы можете узнать, почему они включены, набрав:

mvn dependency:tree -Dincludes=org.slf4j

Поскольку вы используете Jetty, возможно, Jetty также включает путь к классу контейнера в ваше приложение. Попробуйте добавить следующую строку (если это Jetty 6 или старше) в файл контекста вашего веб-приложения:

<Set name="parentLoaderPriority">false</Set>

Он должен установить контейнеры и ресурсы контейнеров на более низкий приоритет, чем у ваших веб-приложений.

0 голосов
/ 25 ноября 2014

Похоже, это вызвано загрузкой несовместимых версий slf4j. Попробуйте это

-In eclipse, open the pom.xml file.
-select the Dependency Hierarchy tab at the bottom. 
-In the search filter, type the name "slf4j" and see all the dependencies that depend on slf4j for logging.

Если вы найдете несколько раз, вы можете исключить его, написав это в каждой зависимости


    &ltexclusions>
      &ltexclusion>
        &ltartifactId>[artifactId]&lt/artifactId>
        &ltgroupId>[groupId]&lt/groupId>
      &lt/exclusion>
    &lt/exclusions>

0 голосов
/ 23 декабря 2011

У вас все еще есть slf4j-simple-1.5.8.jar в вашем classpath (в src/main/webapp/WEB-INF/lib/slf4j-simple-1.5.8.jar) согласно сообщению об ошибке. Какой инструмент (Ant, Maven) вы используете для процесса сборки?

...