从所需的.class文件中间接引用

我在STS中遇到以下错误:

无法解析org.springframework.core.env.EnvironmentCapable类型。 它是从所需的.class文件间接引用的

这听起来像是一个传递依赖问题。 这意味着您的代码依赖于jar或库来执行某些操作 – 显然,您依赖于Spring框架代码。 那么,所有Spring代码也依赖于库和jar。

最有可能的是,您需要将corerctly版本化的org.springframework.core jar添加到类路径中,以便在IDE尝试构建项目时找到EnvironmentCapable类。

这也可能是一个jar冲突问题,虽然听起来不太可能。 当应用程序遇到jar冲突(也称为“dll hell”)时,编译器会查找具有相同完全限定名称的多个jar和类。 例如,假设您将Spring添加到类路径以及整个Tomcat服务器库。 那么,这两个jar子可能包含完全相同的命名类,可能是相同的版本,也许是不同的版本。 但无论哪种方式,当编译器查找该EnvironmentCapable类时,它会找到两个(在这个设计的例子中) – 一个在Spring jar中,一个在Tomcat jar中。 好吧,它不知道选择哪一个,因此它抛出一个ClassDefNotFoundException ,它会/可能表现为你遇到的错误。

当我在spring-security-config上使用spring security时遇到了同样的错误。在jven中删除了maven repo中的jar并在eclipse中给了maven-> update Project。 它已经解决了。请试试一次。

从命令行运行“mvn clean install”,您将看到项目失败,您将在日志中看到导致此类问题的工件。 之后,从.m2 / repository中删除工件,然后从eclipse中删除maven。