当前位置: 首页 > 知识库问答 >
问题:

Spring Boot抛出NoSuchMethodError org.springframework.util.StringUtils。外部tomcat部署为空

上官扬
2023-03-14

我用Spring启动将SpringRest服务作为外部雄猫的战争文件。

引起原因:Java . lang . nosuchmethoderror:org . spring framework . util . string utils . isempty(Ljava/lang/Object;)Z

Spring版本由maven中的Spring启动器-启动器-父级管理,但我总是得到一个例外,这是不兼容的Spring版本的典型特征。我测试:

> < Li > < p > spring-boot-starter-parent v * 1 . 2 . 7 . release *和v*1.3.0.BUILD-SNAPSHOT*

tomcat v8.0.3和8.0.28

奇怪的是,我还部署为无bug的可运行jar文件。我还反编译了war文件,找到了org.springframework.util.StringUtils。在\WEB-INF\lib\spring-core-4.1.8.RELEASE中为空。

我还检查了maven调试输出,发现只有一个具有正确版本(4.1.8.RELEASE)的Spring核心工件。

有没有可能tomcat使用sping-core也在内部并且有冲突?

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个答案

胡光霁
2023-03-14

我发现了我的错误。我还会在我的项目共享库lisa中添加spring-android-core。

不要在classpath中使用spring-android-core和spring-core。

 类似资料:
  • 我在springboot应用程序中有筛选器。在embedded tomcate 9.0.34中运行该应用程序时,它可以正常工作。然而,当我创建war并将其部署在外部Tomcate8.5上时,它会抛出以下错误。

  • 本文向大家介绍浅谈springboot内置tomcat和外部独立部署tomcat的区别,包括了浅谈springboot内置tomcat和外部独立部署tomcat的区别的使用技巧和注意事项,需要的朋友参考一下 前两天,我去面了个试,面试官问了我个问题,独立部署的tomcat跟springboot内置的tomcat有什么区别,为什么存在要禁掉springboot的tomcat然后将项目部署到独立的to

  • 最近,我发现可以使用Spring Boot附带的ServletRegistrationBean将自己的servlet bean添加到MVC中。但是文档似乎表明这只适用于嵌入式servlet容器:http://docs.spring.io/spring-boot/docs/current/reference/html/howto-embedded-servlet-containers.html我的简

  • 完成干净的构建后,我将war文件复制到Tomcat的文件夹中。但是部署会发生两次,并且在上下文已经存在的情况下以异常结束。我错过了什么? 非常感谢您的帮助。

  • 本文向大家介绍SpringBoot应用部署于外置Tomcat容器的方法,包括了SpringBoot应用部署于外置Tomcat容器的方法的使用技巧和注意事项,需要的朋友参考一下 0x01. 概述 SpringBoot平时我们用的爽歪歪,爽到它自己连Tomcat都自集成了,我们可以直接编写SBT启动类,然后一键开启内置的Tomcat容器服务,确实是很好上手。但考虑到实际的情形中,我们的Tomcat服务