2015-11-11 2 views
0

Я делаю службу весеннего отдыха в качестве файла войны на внешнем коте с пружинной загрузкой.Spring Boot throws NoSuchMethodError org.springframework.util.StringUtils.isEmpty для внешнего развертывания tomcat

Caused by: java.lang.NoSuchMethodError: org.springframework.util.StringUtils.isEmpty(Ljava/lang/Object;)Z

Пружинные версии управляются пружинных загрузками стартера-родитель в мавена, но всегда я получаю исключение, которое характерно для несовместимой пружинной версии. Я тест с:

  • весна-загрузки стартер-родитель против * 1.2.7.RELEASE * и v * 1.3.0.BUILD-SNAPSHOT *

  • v8.0.3 и кот 8.0.28

Странно, что я также развернута как исполняемый файл jar, который не содержит ошибок. Я также декомпилирую файл войны и нашел org.springframework.util.StringUtils.isEmpty в \ WEB-INF \ lib \ spring-core-4.1.8.RELEASE.

Я проверил также вывод отладки maven и нашел только один артефакт с пружинным сердечником с правильной версией (4.1.8.RELEASE).

Возможно, что tomcat использует пружинный сердечник и внутренний, и есть конфликт?

Исключение в Tomcat логфайл путем развертывания:

Caused by: java.lang.NoSuchMethodError: org.springframework.util.StringUtils.isEmpty(Ljava/lang/Object;)Z 
    at org.springframework.boot.logging.logback.LogbackLoggingSystem.getLogger(LogbackLoggingSystem.java:159) 
    at org.springframework.boot.logging.logback.LogbackLoggingSystem.beforeInitialize(LogbackLoggingSystem.java:91) 
    at org.springframework.boot.logging.LoggingApplicationListener.onApplicationStartedEvent(LoggingApplicationListener.java:155) 
    at org.springframework.boot.logging.LoggingApplicationListener.onApplicationEvent(LoggingApplicationListener.java:141) 
    at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:151) 
    at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:128) 
    at org.springframework.boot.context.event.EventPublishingRunListener.publishEvent(EventPublishingRunListener.java:100) 
    at org.springframework.boot.context.event.EventPublishingRunListener.started(EventPublishingRunListener.java:54) 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:278) 
    at org.springframework.boot.context.web.SpringBootServletInitializer.run(SpringBootServletInitializer.java:134) 
    at org.springframework.boot.context.web.SpringBootServletInitializer.createRootApplicationContext(SpringBootServletInitializer.java:125) 
    at org.springframework.boot.context.web.SpringBootServletInitializer.onStartup(SpringBootServletInitializer.java:81) 
    at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:175) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5170) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    ... 45 more 

Мой pom.xml:

... 
<parent> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>1.2.7.RELEASE</version> 
</parent> 
<properties> 
    <java.version>1.8</java.version> 
</properties> 
<dependencies> 
     <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-orm</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-jms</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>de.cherrypit</groupId> 
     <artifactId>lisa</artifactId> 
     <version>0.1.1-SNAPSHOT</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>5.0.2.Final</version> 
    </dependency> 
    <dependency> 
     <groupId>mysql</groupId> 
     <artifactId>mysql-connector-java</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.activemq</groupId> 
     <artifactId>activemq-broker</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-tomcat</artifactId> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-web</artifactId> 
    </dependency> 
</dependencies> 
<build> 
    <plugins> 
     <plugin> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-maven-plugin</artifactId> 
     </plugin> 
    </plugins> 
</build> 
<repositories> 
    <repository> 
     <id>spring-releases</id> 
     <url>https://repo.spring.io/libs-release</url> 
    </repository> 
</repositories> 
<pluginRepositories> 
    <pluginRepository> 
     <id>spring-releases</id> 
     <url>https://repo.spring.io/libs-release</url> 
    </pluginRepository> 
</pluginRepositories> 
<packaging>war</packaging> 
... 
+1

Рассмотрим добавление $ {spring.version} для ваших зависимостей Spring. – JustinKSU

+0

ах да! Вы правы. Его метод весеннего класса :) – Kabir

+0

@JustinKSU, если я добавлю spring.version, я становлюсь этим предупреждением: 'Это выражение оценивается как 4.1.8.RELEASE Свойство определено в org.springframework.boot: spring-boot-dependencies: 1.2. 7.RELEASE' – Puls

ответ

0

Я нашел ошибку. Я бы также добавил весенний андроид в моей общей библиотеке проекта lisa.

Dont use spring-android-core and spring-core in classpath.