【问题标题】:The type org.springframework.context.ConfigurableApplicationContext cannot be resolved. It is indirectly referenced from required .class filesorg.springframework.context.ConfigurableApplicationContext 类型无法解析。它是从所需的 .class 文件中间接引用的
【发布时间】:2017-02-26 10:18:39
【问题描述】:

我正在按照spring.io 的教程使用 Spring Boot 构建一个 Spring 应用程序。

我可以让程序在一台计算机上完美运行。 当我在另一台计算机上尝试时,出现以下错误

org.springframework.context.ConfigurableApplicationContext 类型无法解析。它是从所需的 .class 文件中间接引用的

我尝试删除和添加我的 JRE 系统库 (JDK 1.8),以及使用 maven 清理和更新项目,甚至删除并重新导入整个项目。所有这些方法都没有成功。

我的 pom 文件是

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.4.1.RELEASE</version>
  </parent>

  <groupId>test.api</groupId>
  <artifactId>api.test</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>api.test Maven Webapp</name>
  <url>http://maven.apache.org</url>

  <dependencies>
     <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-web</artifactId>
     </dependency>
     <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-actuator</artifactId>
     </dependency>
     <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-test</artifactId>
         <scope>test</scope>
     </dependency>   
  </dependencies>

   <properties>
       <java.version>1.8</java.version>
   </properties>

  <build>
    <finalName>api.test</finalName>
    <plugins>
      <plugin>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>

</project>

给我错误的类是 HelloWorldConfiguration.java 类

package hello;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class HelloWorldConfiguration {

    public static void main(String[] args) {
        SpringApplication.run(HelloWorldConfiguration.class, args);
    }

}

任何帮助将不胜感激。谢谢。

【问题讨论】:

  • 在它不工作的第二台机器上,在你的本地 m2 repo 中验证 maven 依赖项是否正常,这意味着 jars 存在并且没有损坏
  • jars 存在,但我如何验证它们是否已损坏,如果是,我该如何修复它们?
  • 用 7zip 或类似的软件打开它们并检查类是否存在
  • 试试这个link
  • @RITZXAVI 我已经尝试了该链接,但它没有解决问题。 @Nadir 再次检查我不确定罐子是否存在。在 .m2 我有 ...\.m2\repository\org\springframework\spring-context 而不是 ...\.m2\repository\org\springframework\context

标签: java spring maven spring-boot pom.xml


【解决方案1】:

您的 Maven 缓存在第二台机器上已损坏。无法打开 JAR,这就是您收到此异常的原因。

您可以通过在该项目的第二台机器上运行此命令来解决此问题:

mvn dependency:purge-local-repository

如果这不起作用,请尝试删除该机器上的本地存储库 (~/.m2/repository/org/springframework),然后再次运行 mvn package

【讨论】:

  • 我认为我在某个地方隐藏了一个更大的问题。当我尝试运行代码时,我现在收到Failed to instantiate SLF4J LoggerFactory。谢谢你的帮助
【解决方案2】:

我之前也遇到过同样的问题。可能发生了一些依赖项损坏。您可以清除并重新解决依赖关系。 为此:

  1. 转到 pom.xml 所在的项目位置。
  2. 在那里打开命令提示符并输入以下命令:

    mvn 依赖:purge-local-repository -DreResolve=true

【讨论】:

    【解决方案3】:

    我遇到了同样的问题,我按照以下步骤解决了它:

    1.关闭Eclipse

    2.删除存储库文件夹.m2/repository中的所有文件

    3.重新打开 Eclipse 并更新您的 Maven 项目

    【讨论】:

      【解决方案4】:

      我遇到了同样的问题。我通过删除本地计算机上的 Maven (.m2) 的本地存储库目录解决了这个问题。它为我解决了这个问题。

      【讨论】:

        【解决方案5】:
        1. 找出您的项目使用的 spring-context 版本:

        (在 Eclipse 中:项目资源管理器 -> [您的项目] -> Maven 依赖项)

        mvn dependency:tree
        

        列出项目的所有依赖项

        1. 从您的 maven 存储库 .m2/repository 中删除文件夹 org/springframework/spring-context/5.0.9.RELEASE。假设 5.0.9.RELEASE 是 spring-context 发布版本。

        【讨论】:

          【解决方案6】:

          发生此冲突,因为您的某些依赖项已损坏。请按照以下步骤操作:-> 要消除此冲突,只需进入您的 .m2 文件夹打开存储库并删除该文件夹中的所有文件。现在打开你的项目进入调试做 maven clean 并在清理和所有下载之后更新你的 maven projet。你的冲突就会得到解决。

          【讨论】:

            【解决方案7】:

            我也有同样的问题,我通过删除 .m2/repository/org 文件夹解决了,后来做了 maven 更新表单 STS。

            【讨论】:

              【解决方案8】:
              Add bellow dependancy
              
              
              <!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
              <dependency>
                  <groupId>org.springframework</groupId>
                  <artifactId>spring-context</artifactId>
                  <version>4.3.7.RELEASE</version>
              </dependency>
              

              【讨论】:

                【解决方案9】:

                可能是因为某些依赖没有正确解析。 您可以尝试将“spring-boot-starter-parent”的版本更改/降级为您本地的其他工作项目。 例如。通过将“spring-boot-starter-parent”从“2.3.0.RELEASE”设置为“1.5.9.RELEASE”(该版本适用于其他项目),我的错误消失了。

                【讨论】:

                  【解决方案10】:

                  我的回答为时已晚,但可能对其他人有所帮助。

                  在将 Eclipse IDE 与我使用 start.spring.io 制作的 spring 项目一起使用时,我遇到了同样的问题。我修复它的方式:

                  1. 右键单击您的项目。
                  2. 运行方式。
                  3. Maven 安装。

                  【讨论】:

                  • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
                  【解决方案11】:

                  我也遇到了同样的问题,为了解决这个问题,我下载了 jar 并将其添加为外部 jar。 这是下载链接:http://www.java2s.com/Code/Jar/o/Downloadorgspringframeworkcontextjar.htm

                  【讨论】:

                  • 最好采用可重复的解决方案。应该有一种方法可以确保 pom 中列出的环境和依赖项产生相同的行为。
                  猜你喜欢
                  • 1970-01-01
                  • 2017-10-05
                  • 2013-05-14
                  • 2016-10-31
                  • 2016-02-20
                  • 2015-02-10
                  • 2019-01-26
                  • 2012-04-30
                  • 2014-10-15
                  相关资源
                  最近更新 更多