java 从 Spring Boot 2.4.3升级到2.6.2的Spring致动器更改

t9eec4r0  于 2023-03-16  发布在  Java
关注(0)|答案(1)|浏览(305)

我们有一个使用Spring Boot 2.4.3开发的Sping Boot Web应用程序,并部署了Spring Actuator。我正在研究升级到Spring Boot 2.6.2,大部分问题都解决了。我从项目和war文件中删除了Spring Actuator starter,它部署和运行良好。我们正在使用Java 11和Wildfly 18运行。
如果我将spring actuator starter重新添加到项目pom文件和war文件pom文件中,则在部署过程中会显示以下警告:

16:44:28,063 WARN  [org.jboss.modules.define] (Thread-115) Failed to define class io.micrometer.core.instrument.binder.jersey.server.MetricsApplicationEventListener in Module "deployment.test.war" from Service Module Loader: java.lang.NoClassDefFoundError: Failed to link io/micrometer/core/instrument/binder/jersey/server/MetricsApplicationEventListener (Module "deployment.test.war" from Service Module Loader): org/glassfish/jersey/server/monitoring/ApplicationEventListener
    at java.base/java.lang.ClassLoader.defineClass1(Native Method)
    at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016)
    at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1095)
    at org.jboss.modules.ModuleClassLoader.doDefineOrLoadClass(ModuleClassLoader.java:424)
    at org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:555)
    at org.jboss.modules.ModuleClassLoader.loadClassLocal(ModuleClassLoader.java:339)
    at org.jboss.modules.ModuleClassLoader$1.loadClassLocal(ModuleClassLoader.java:126)
    at org.jboss.modules.Module.loadModuleClass(Module.java:731)
    at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:247)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:410)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)
    at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:116)
    at java.base/java.lang.Class.forName0(Native Method)
    at java.base/java.lang.Class.forName(Class.java:398)
    at deployment.test.war//org.springframework.boot.autoconfigure.condition.FilteringSpringBootCondition.resolve(FilteringSpringBootCondition.java:108)
    at deployment.test.war//org.springframework.boot.autoconfigure.condition.FilteringSpringBootCondition$ClassNameFilter.isPresent(FilteringSpringBootCondition.java:140)
    at deployment.test.war//org.springframework.boot.autoconfigure.condition.FilteringSpringBootCondition$ClassNameFilter$2.matches(FilteringSpringBootCondition.java:128)
    at deployment.test.war//org.springframework.boot.autoconfigure.condition.OnClassCondition$StandardOutcomesResolver.getOutcome(OnClassCondition.java:227)
    at deployment.test.war//org.springframework.boot.autoconfigure.condition.OnClassCondition$StandardOutcomesResolver.getOutcome(OnClassCondition.java:214)
    at deployment.test.war//org.springframework.boot.autoconfigure.condition.OnClassCondition$StandardOutcomesResolver.getOutcomes(OnClassCondition.java:201)
    at deployment.test.war//org.springframework.boot.autoconfigure.condition.OnClassCondition$StandardOutcomesResolver.resolveOutcomes(OnClassCondition.java:190)
    at deployment.test.war//org.springframework.boot.autoconfigure.condition.OnClassCondition$ThreadedOutcomesResolver.lambda$new$0(OnClassCondition.java:150)
    at java.base/java.lang.Thread.run(Thread.java:834)

我继续尝试为缺失的类添加jar文件到项目中,但是问题又添加到了另一个缺失的类文件中。我找不到Spring Actuator在Spring Boot 2.4.2和2.6.2版本之间的任何主要变化会导致这个问题。
有人对可能导致部署问题的 Boot 更改有什么见解吗?

q3qa4bjr

q3qa4bjr1#

问题在于不可能在部署时找到“org/glassfish/jersey/server/monitoring/ApplicationEventListener”的依赖关系。
一个可能的解决办法是在战争中包括

<dependency> 
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-server</artifactId> 
</dependency>

相关问题