首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Spring Boot依赖项从1.5.3.RELEASE更新到2.2.7.RELEASE breaks App

将Spring Boot依赖项从1.5.3.RELEASE更新到2.2.7.RELEASE breaks App
EN

Stack Overflow用户
提问于 2021-10-13 21:34:39
回答 1查看 459关注 0票数 0

我是使用Spring Boot的新手,我从1.5.3复制了一个项目,并让应用程序运行在spring/application.java的这段代码中

代码语言:javascript
复制
@SpringBootApplication(scanBasePackages = "com.company")
@ComponentScan(basePackages = "com.company")
@EntityScan(basePackages = "com.company")
@EnableTransactionManagement
@EnableScheduling
public class Application {

    private static final Logger log = LoggerFactory.getLogger(Application.class);


    public static void main(String[] args) throws Exception {
        // log.info("Starting up... main args: " + Arrays.asList(args));
        System.setProperty("spring.devtools.restart.enabled", "false");        
        // Runs Orchestration:run(args) via Spring
        new SpringApplicationBuilder(Application.class)
                // .web(WebApplicationType.NONE) <- this part is uncommented in 2.2.7 run
                .run(args);

    }

}

我也有一个@Component类,它在SpringApplicatoinBuilder被调用之后运行。

代码语言:javascript
复制
@Component
public class Orchestration implements CommandLineRunner {

    @Override
    public void run(String...args) throws Exception {
       // stuff
    }

}

当我将模块pom文件中的所有依赖项从1.5.3.RELEASE升级到2.2.7.RELEASE时,应用程序似乎不再调用Orchestration @Component。我还查看了其他示例,并引入了本文https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.0-Migration-Guide中提到的migrator依赖项。但是没有幸运地正确运行Spring App。

代码语言:javascript
复制
<dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
      <version>${spring-boot.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jms</artifactId>
      <version>4.3.5.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
        <version>${spring-boot.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jersey</artifactId>
        <version>${spring-boot.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <version>${spring-boot.version}</version>
        <scope>runtime</scope>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-configuration-processor</artifactId>
        <version>${spring-boot.version}</version>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <version>${spring-boot.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-properties-migrator</artifactId>
        <version>${spring-boot.version}</version>
    </dependency>
 </dependencies>

最糟糕的是,我没有得到任何编译或运行时错误,所以我不确定这里有什么地方不正确。有没有更有经验的Spring2.2.7专家可以帮我设置项目?

编辑10/13/2021 6:18 an当更新到2.5.5版本时,我在SpringApplicationBuilder类中收到错误消息...

代码语言:javascript
复制
Exception in thread "main" 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:49)
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:108)
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:58)
        at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:88)
Caused by: java.lang.NoClassDefFoundError: org/springframework/core/metrics/ApplicationStartup
        at org.springframework.boot.SpringApplication.<init>(SpringApplication.java:253)
        at org.springframework.boot.SpringApplication.<init>(SpringApplication.java:266)
        at org.springframework.boot.builder.SpringApplicationBuilder.createSpringApplication(SpringApplicationBuilder.java:108)
        at org.springframework.boot.builder.SpringApplicationBuilder.<init>(SpringApplicationBuilder.java:97)
        at com.planalytics.rp.orchestration.spring.Application.main(Application.java:35)
        ... 8 more
Caused by: java.lang.ClassNotFoundException: org.springframework.core.metrics.ApplicationStartup
        at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:151)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        ... 13 more
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-26 13:50:19

这些依赖项由您声明的Spring Boot核心工件提取。这通常是通过您声明为项目父pom的spring-boot-starter-parent来完成的。

为了将您的项目更新到Spring5(实际发布的版本),您必须将spring-boot- starter -parent声明从1.5.3更新到2.X (如果不使用starter parent,则需要更新spring-boot-dependencies依赖版本)。你确实可以在Spring Boot 2的发行说明中读到:

Spring Boot 2.0构建在Spring Framework5之上,并且需要Spring Framework5。

请注意,从Spring Boot 1.5.3更新到Spring Boot 2可能会导致您的应用程序出现一些回归。因此,您应该小心地测试您的应用程序,以识别所有它们。Spring-Boot-2.0- migration -Guide也是简化迁移的好资源。

下面是通过将org.springframework.boot:spring-boot-starter:jar:2.0.2.RELEASE声明为项目的父级而获得的结果的一个片段

代码语言:javascript
复制
    $ mvn dependency:tree                                                                       
[INFO] Scanning for projects...                                                             
[INFO]                                                                                      
[INFO] ----------------------------------------------------             
[INFO] Building demo 0.0.1-SNAPSHOT                                                         
[INFO] --------------------------------[ jar ]---------------------------------             
[INFO]                                                                                      
[INFO] --- maven-dependency-plugin:3.0.2:tree (default-cli) @ demo ---                      
[INFO] com.example:demo:jar:0.0.1-SNAPSHOT                                                  
[INFO] +- org.springframework.boot:spring-boot-starter:jar:2.5.5.RELEASE:compile            
[INFO] |  +- org.springframework.boot:spring-boot:jar:2.5.5.RELEASE:compile                 
[INFO] |  |  \- org.springframework:spring-context:jar:5.0.6.RELEASE:compile                
[INFO] |  |     +- org.springframework:spring-aop:jar:5.0.6.RELEASE:compile                 
[INFO] |  |     +- org.springframework:spring-beans:jar:5.0.6.RELEASE:compile               
[INFO] |  |     \- org.springframework:spring-expression:jar:5.0.6.RELEASE:compile          
[INFO] |  +- org.springframework.boot:spring-boot-autoconfigure:jar:2.5.5.RELEASE:compile   
[INFO] |  +- org.springframework.boot:spring-boot-starter-logging:jar:2.5.5.RELEASE:compile`
... 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69562579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档