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

时间:2016-10-17 12:20:48

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

我正在关注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);
    }

}

非常感谢任何帮助。谢谢。

10 个答案:

答案 0 :(得分:33)

第二台计算机上的Maven缓存已损坏。 JAR无法打开,这就是您获得此例外的原因。

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

mvn dependency:purge-local-repository

如果这不起作用,请尝试删除该计算机上的本地仓库(~/.m2/repository/org/springframework)并再次运行mvn package

答案 1 :(得分:10)

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

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

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

  1. 找出您的项目使用的spring-context版本:

(在Eclipse中:Project Explorer-> [您的项目]-> Maven依赖项)

mvn dependency:tree

列出项目的所有依赖项

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

答案 4 :(得分:0)

我遇到了同样的问题,我按照这些步骤进行了修复:

1。关闭Eclipse

2. 删除存储库文件夹.m2/repository

中的所有文件

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

答案 5 :(得分:0)

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

答案 6 :(得分:0)

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

答案 7 :(得分:0)

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>

答案 8 :(得分:0)

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

答案 9 :(得分:-1)

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