我的一个 Spring Boot 应用程序无法在我的 IDE (STS 4.9.0) 中运行。Maven Build 运行没有任何问题。但是,如果我想使用 Boot Dashboard 在 STS 中运行应用程序,则会收到以下错误:
java.lang.NoSuchMethodError: org.springframework.core.type.AnnotationMetadata.introspect(Ljava/lang/Class;)Lorg/springframework/core/type/AnnotationMetadata;
at org.springframework.context.annotation.ConfigurationClassUtils.checkConfigurationClassCandidate(ConfigurationClassUtils.java:108)
at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:276)
at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:236)
at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:280)
at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:96)
at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:707)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:533)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:143)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:758)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:750)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:405)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:315)
at de.berlin.itdz.forms4itdz.kita.app.KitaApp.main(KitaApp.java:27)
05.01.2021 08:35:44 ERROR [main]
***************************
APPLICATION FAILED TO START
***************************
Description:
An attempt was made to call a method that does not exist. The attempt was made from the following location:
org.springframework.context.annotation.ConfigurationClassUtils.checkConfigurationClassCandidate(ConfigurationClassUtils.java:108)
The following method did not exist:
org.springframework.core.type.AnnotationMetadata.introspect(Ljava/lang/Class;)Lorg/springframework/core/type/AnnotationMetadata;
The method's class, org.springframework.core.type.AnnotationMetadata, is available from the following locations:
jar:file:/Z:/admpetersen/sts-4.9.0.RELEASE/configuration/org.eclipse.osgi/99/0/.cp/lib/spring/spring-core-5.1.4.RELEASE.jar!/org/springframework/core/type/AnnotationMetadata.class
jar:file:/Z:/admpetersen/.m2/repository/org/springframework/spring-core/5.2.10.RELEASE/spring-core-5.2.10.RELEASE.jar!/org/springframework/core/type/AnnotationMetadata.class
The class hierarchy was loaded from the following locations:
org.springframework.core.type.AnnotationMetadata: file:/Z:/admpetersen/sts-4.9.0.RELEASE/configuration/org.eclipse.osgi/99/0/.cp/lib/spring/spring-core-5.1.4.RELEASE.jar
Action:
Correct the classpath of your application so that it contains a single, compatible version of org.springframework.core.type.AnnotationMetadata
05.01.2021 08:35:44 DEBUG [main] Closing org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@388ffbc2, started on Tue Jan 05 08:35:44 CET 2021
正如消息告诉我的那样,加载了两个不同版本的 spring 核心库,一个作为 maven 依赖项的正确版本和一个来自包含的 OSGi-Bundle 的错误版本。我真的很想更正消息中建议的类路径以排除 OSGi 资源。但我不知道怎么做。在项目属性(Java 构建路径)和 Spring Boot 应用程序的调试配置中都没有提到使用 OSGi 库。显然它们是隐含的。有谁知道如何让他们远离类路径?提前致谢!
一些附加说明:
- 启用了以下项目方面:动态 Web 模块 4.0、Java 1.8、JavaScript 1.0、JavaServer Faces 2.2
- .project 的内容:
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>kita-formular-boot</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.wst.common.project.facet.core.builder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.wst.validation.validationbuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.springframework.ide.eclipse.boot.validation.springbootbuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.m2e.core.maven2Builder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.m2e.core.maven2Nature</nature>
<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
<nature>org.eclipse.wst.jsdt.core.jsNature</nature>
<nature>com.jaspersoft.studio.babel.editor.rbeNature</nature>
</natures>
</projectDescription>