2016-05-09 2 views
1

Я пытаюсь развернуть tmp1 branch приложения примера Spring (приложение Spring Spring 1.3.4 с использованием JSP и наличие WAR упаковка) в Pivotal Cloud Foundry, используя STS Boot Dashboard. Я создал manifest.yml файл, глядя, как показано ниже:«SLF4J: путь к пути содержит несколько ошибок привязки SLF4J» при развертывании приложения Spring для Cloud Foundry

--- 
applications: 
- name: np-spring-tutorial 
    buildpack: https://github.com/cloudfoundry/java-buildpack.git 
    path: target/spring-tutorial-0.0.1-SNAPSHOT.war 
    env: 
    application_url: http://np-spring-tutorial.cfapps.io 
    timeout: 180 

приложение развертывается и, кажется, работает хорошо; Я могу просматривать страницы. Однако, при запуске она дает: SLF4J: путь класса содержит несколько привязок SLF4J»ошибка Вот лог:.?

[9 May, 2016 11:18:31 AM - Boot Dashboard] - Creating application: np-spring-tutorial 
[9 May, 2016 11:18:38 AM - Boot Dashboard] - Verifying that the application was created successfully: np-spring-tutorial 
Updated app with guid 7a95bd52-1c14-461b-a6df-59aeb7ba285a ({"environment_json"=>"PRIVATE DATA HIDDEN"}) 
[9 May, 2016 11:19:08 AM - Boot Dashboard] - Generating archive for application: np-spring-tutorial 
[9 May, 2016 11:19:08 AM - Boot Dashboard] - Uploading archive to Cloud Foundry for application: np-spring-tutorial 
[9 May, 2016 11:19:57 AM - Boot Dashboard] - Archive uploaded to Cloud Foundry for application: np-spring-tutorial 
[9 May, 2016 11:20:02 AM - Boot Dashboard] - Starting application: np-spring-tutorial 
[9 May, 2016 11:20:09 AM - Boot Dashboard] - Checking if the application is running. Please wait... 
Updated app with guid 7a95bd52-1c14-461b-a6df-59aeb7ba285a ({"state"=>"STARTED"}) 
Creating container 
Successfully created container 
Downloading app package... 
Downloaded app package (45.5M) 
Staging... 
-----> Java Buildpack Version: 78c3d0a | https://github.com/cloudfoundry/java-buildpack.git#78c3d0a 
-----> Downloading Open Jdk JRE 1.8.0_91-unlimited-crypto from https://download.run.pivotal.io/openjdk/trusty/x86_64/openjdk-1.8.0_91-unlimited-crypto.tar.gz (1.9s) 
     Expanding Open Jdk JRE to .java-buildpack/open_jdk_jre (1.1s) 
-----> Downloading Open JDK Like Memory Calculator 2.0.2_RELEASE from https://download.run.pivotal.io/memory-calculator/trusty/x86_64/memory-calculator-2.0.2_RELEASE.tar.gz (0.0s) 
     Memory Settings: -Xss1M -Xmx768M -XX:MaxMetaspaceSize=104857K -Xms768M -XX:MetaspaceSize=104857K 
-----> Downloading Container Customizer 1.0.0_RELEASE from https://download.run.pivotal.io/container-customizer/container-customizer-1.0.0_RELEASE.jar (0.0s) 
Exit status 0 
Staging complete 
Uploading droplet, build artifacts cache... 
Uploading build artifacts cache... 
Uploading droplet... 
Uploaded build artifacts cache (45.4M) 
Uploaded droplet (91.1M) 
Creating container 
Successfully created container 
Starting health monitoring of container 
SLF4J: Class path contains multiple SLF4J bindings. 
SLF4J: Found binding in [jar:file:/home/vcap/app/WEB-INF/lib/logback-classic-1.1.3.jar!/org/slf4j/impl/StaticLoggerBinder.class] 
SLF4J: Found binding in [jar:file:/home/vcap/app/WEB-INF/lib/logback-classic-1.1.7.jar!/org/slf4j/impl/StaticLoggerBinder.class] 
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. 
Failed to instantiate [ch.qos.logback.classic.LoggerContext] 
Reported exception: 
java.lang.AbstractMethodError: ch.qos.logback.classic.pattern.EnsureExceptionHandling.process(Lch/qos/logback/core/Context;Lch/qos/logback/core/pattern/Converter;)V 
    at ch.qos.logback.core.pattern.PatternLayoutBase.start(PatternLayoutBase.java:85) 
    at ch.qos.logback.classic.encoder.PatternLayoutEncoder.start(PatternLayoutEncoder.java:28) 
    at ch.qos.logback.classic.BasicConfigurator.configure(BasicConfigurator.java:50) 
    at ch.qos.logback.classic.util.ContextInitializer.autoConfig(ContextInitializer.java:164) 
    at org.slf4j.impl.StaticLoggerBinder.init(StaticLoggerBinder.java:85) 
    at org.slf4j.impl.StaticLoggerBinder.<clinit>(StaticLoggerBinder.java:55) 
    at org.slf4j.LoggerFactory.bind(LoggerFactory.java:140) 
    at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:119) 
    at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:328) 
    at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:280) 
    at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155) 
    at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:132) 
    at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:273) 
    at org.springframework.boot.SpringApplication.<clinit>(SpringApplication.java:191) 
    at com.naturalprogrammer.spring.tutorial.NpSpringTutorialApplication.main(NpSpringTutorialApplication.java:14) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:54) 
    at java.lang.Thread.run(Thread.java:745) 
SLF4J: Actual binding is of type [ch.qos.logback.classic.util.ContextSelectorStaticBinder] 
Exception in thread "main" java.lang.RuntimeException: java.lang.reflect.InvocationTargetException 
    at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:62) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:54) 
    ... 1 more 
Caused by: java.lang.AbstractMethodError: ch.qos.logback.classic.pattern.EnsureExceptionHandling.process(Lch/qos/logback/core/Context;Lch/qos/logback/core/pattern/Converter;)V 
    at ch.qos.logback.core.pattern.PatternLayoutBase.start(PatternLayoutBase.java:85) 
    at ch.qos.logback.classic.encoder.PatternLayoutEncoder.start(PatternLayoutEncoder.java:28) 
    at org.springframework.boot.logging.logback.LogbackConfigurator.start(LogbackConfigurator.java:112) 
    at org.springframework.boot.logging.logback.DefaultLogbackConfiguration.consoleAppender(DefaultLogbackConfiguration.java:121) 
    at org.springframework.boot.logging.logback.DefaultLogbackConfiguration.apply(DefaultLogbackConfiguration.java:78) 
    at org.springframework.boot.logging.logback.LogbackLoggingSystem.loadDefaults(LogbackLoggingSystem.java:124) 
    at org.springframework.boot.logging.AbstractLoggingSystem.initializeWithConventions(AbstractLoggingSystem.java:74) 
    at org.springframework.boot.logging.AbstractLoggingSystem.initialize(AbstractLoggingSystem.java:49) 
    at org.springframework.boot.logging.logback.LogbackLoggingSystem.initialize(LogbackLoggingSystem.java:106) 
    at org.springframework.boot.logging.LoggingApplicationListener.initializeSystem(LoggingApplicationListener.java:262) 
    at org.springframework.boot.logging.LoggingApplicationListener.initialize(LoggingApplicationListener.java:233) 
    at org.springframework.boot.logging.LoggingApplicationListener.onApplicationEnvironmentPreparedEvent(LoggingApplicationListener.java:200) 
    at org.springframework.boot.logging.LoggingApplicationListener.onApplicationEvent(LoggingApplicationListener.java:176) 
    at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:163) 
    at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:136) 
    at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:119) 
    at org.springframework.boot.context.event.EventPublishingRunListener.publishEvent(EventPublishingRunListener.java:111) 
    at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:65) 
    at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:54) 
    at org.springframework.boot.SpringApplication.createAndRefreshContext(SpringApplication.java:330) 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:307) 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1191) 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1180) 
    at com.naturalprogrammer.spring.tutorial.NpSpringTutorialApplication.main(NpSpringTutorialApplication.java:14) 
    ... 6 more 
Exit status 0 
Exit status 0 
App instance exited with guid 7a95bd52-1c14-461b-a6df-59aeb7ba285a payload: {"instance"=>"3c98e26d-7714-45b8-6152-df1ae08c2025", "index"=>0, "reason"=>"CRASHED", "exit_description"=>"2 error(s) occurred:\n\n* 2 error(s) occurred:\n\n* Codependent step exited\n* cancelled\n* cancelled", "crash_count"=>1, "crash_timestamp"=>1462773044776529510, "version"=>"8cf24bda-13e6-49a6-8b52-906440c1b780"} 
Creating container 
Successfully created container 
SLF4J: Class path contains multiple SLF4J bindings. 
SLF4J: Found binding in [jar:file:/home/vcap/app/WEB-INF/lib/logback-classic-1.1.3.jar!/org/slf4j/impl/StaticLoggerBinder.class] 
SLF4J: Found binding in [jar:file:/home/vcap/app/WEB-INF/lib/logback-classic-1.1.7.jar!/org/slf4j/impl/StaticLoggerBinder.class] 
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. 
SLF4J: Actual binding is of type [ch.qos.logback.classic.util.ContextSelectorStaticBinder] 
    . ____   _   __ _ _ 
/\\/___'_ __ _ _(_)_ __ __ _ \ \ \ \ 
(()\___ | '_ | '_| | '_ \/ _` | \ \ \ \ 
\\/ ___)| |_)| | | | | || (_| | )))) 
    ' |____| .__|_| |_|_| |_\__, |//// 
=========|_|==============|___/=/_/_/_/ 
:: Spring Boot ::  (v1.3.4.RELEASE) 
2016-05-09 05:50:52.875 INFO 29 --- [   main] pertySourceApplicationContextInitializer : Adding 'cloud' PropertySource to ApplicationContext 
2016-05-09 05:50:52.963 INFO 29 --- [   main] nfigurationApplicationContextInitializer : Adding cloud service auto-reconfiguration to ApplicationContext 
2016-05-09 05:50:52.978 INFO 29 --- [   main] c.n.s.t.NpSpringTutorialApplication  : Starting NpSpringTutorialApplication on ip3ju5q5j6m with PID 29 (/home/vcap/app/WEB-INF/classes started by vcap in /home/vcap/app) 
... 
2016-05-09 05:51:07.749 INFO 29 --- [   main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 
2016-05-09 05:51:08.376 INFO 29 --- [   main] o.s.j.e.a.AnnotationMBeanExporter  : Registering beans for JMX exposure on startup 
Container became healthy 
2016-05-09 05:51:08.720 INFO 29 --- [   main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http) 
2016-05-09 05:51:10.014 INFO 29 --- [   main] c.n.s.t.NpSpringTutorialApplication  : Started NpSpringTutorialApplication in 18.612 seconds (JVM running for 19.599) 
[9 May, 2016 11:21:22 AM - Boot Dashboard] - Application appears to have started - np-spring-tutorial 

Любая идея, как это исправить (Этот вопрос возник из this one)

Обновление

в соответствии с рекомендациями Gemini, проверяя WAR, я действительно вижу два Logback-классик-xxxjars:

enter image description here

Однако, глядя на дерево зависимостей Maven, я вижу только версию Logback 1.1.7, как показано ниже:

enter image description here

Итак, что может быть неправильно? Может быть, spring-boot-maven-plugin что-то делает?

ответ

2

В вашем пути к классам должна быть реализована только одна реализация slf4j. Проверьте зависимости проекта и удалите один из них.

От того, что вы опубликовали, в вашем приложении есть две банки jar:file:/home/vcap/app/WEB-INF/lib/logback-classic-1.1.3.jar и jar:file:/home/vcap/app/WEB-INF/lib/logback-classic-1.1.7.jar, что должно быть ошибкой.

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

Если вы используете maven для управления вашими зависимостями, вы можете проверить полные зависимости и убедиться, что существует только один из них (исключая тот, который вы не хотите использовать). Если они добавлены вручную, вы можете вручную удалить их и переупаковать приложение. Это сработает.

+0

Приложение имеет только 1.1.7, что ясно, проверяя зависимости pom. Он работает нормально, когда запускается локально. Однако проблема возникает при развертывании в PWS через загрузочную панель (но не через CLI). – Sanjay

+0

Вы когда-нибудь проверяли свою банку или войну? Есть ли несколько 'logback-classic-x.x.x.jar'? Как вы можете видеть, оба они расположены в 'WEB-INF/lib /'. –

+0

Он может быть импортирован другой зависимостью, команда 'mvn dependency: tree' покажет все зависимости. –

Смежные вопросы