无法访问org.springframework.context.ConfigurableApplicationContext类文件

43

我是Spring Boot的新手,在使用Spring Initializer在IntelliJ中构建我的第一个Spring Boot项目(Maven)时,创建完项目后运行出现了以下错误:

无法访问 org.springframework.context.ConfigurableApplicationContext 找不到 org.springframework.context.ConfigurableApplicationContext 的类文件

我按照许多教程操作,但每次都会遇到这个错误,请问如何解决?

我的pom.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>

    <groupId>com.boot</groupId>
    <artifactId>das-boot</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>First spring boot app</name>
    <description>project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.4.0.RELEASE</version>
        <relativePath /> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

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

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

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


</project>    

你能否展示一下spring-context的Maven依赖?如果不太大的话,能否展示整个POM文件? - gonzo
听起来像是下载文件损坏了。尝试删除Maven的缓存,这样它就会强制重新下载jar文件。 - Andy Wilkinson
1
根据@AndyWilkinson的建议,您可以尝试使用mvn dependency:purge-local-repository清除缓存。 - gonzo
1
@AndyWilkinson 我尝试了,但是运行后还是出现了相同的错误。 - I.shL
@AndyWilkinson 是的,在4.3.2.RELEASE文件夹中没有.jar文件,取而代之的是这个文件:spring-context-4.3.2.RELEASE.jar.lastUpdated。 - I.shL
显示剩余7条评论
22个回答

1
我使用 https://start.spring.io/ 创建我的项目时遇到了相同的错误。在选择Java 8而不是Java 11之后,一切顺利运行。也许这会对像我这样的初学者有所帮助...

1
对我来说,解决问题的方法是删除.idea文件,然后再次打开项目并选择pom.xml文件。

1
我在主方法中的SpringApplication.run调用上悬停时(使用Intellij 2019.3 community ed),提示框中出现了同样的错误,尽管构建似乎顺利进行。但是,这些波浪线下划线令我感到烦恼。

以上解决方案都没有帮助。

最后,我进入了“项目结构”对话框,并注意到两件事情需要修复:

1)我将主模块命名为teamTest,并担心“测试”后缀可能会使一些自动配置行为出现问题;

2)我的模块结构有些不对称(teamTest模块位于项目根目录,test模块位于src/test子目录中)。

我删除了现有的teamTest主模块,并添加了一个名为teamDemo的新模块,它位于src/main子目录中,作为现有测试模块的同级目录。然后,我进入了pom.xml文件,并在几个地方将工件从teamTest重命名为teamDemo,因为我看到了一个关于pom.xml可能在未来覆盖此更改的警告。

为了保险起见,我还进行了以下操作: - 关闭项目 - 将其从历史记录中删除 - 关闭Intellij - 在gitbash窗口中运行mvn dependency:purge-local-repository 然后重新运行Intellij并再次打开项目。

红色的波浪线消失了。
呼!希望这能帮助其他人...

1

我在使用Spring 3.0.4和Java 17从Initializr加载新项目后遇到了相同的问题。前一天,我已经成功地完成了两个其他Spring Boot项目,并且上面的建议都没有起作用。我可以清楚地看到包含ConfigurableApplicationContext的jar文件位于外部库文件夹中(org.springframework:spring-core-6.0.6)。我尝试再次在initializr中使用与之前不起作用的项目相同的依赖项创建项目。我尝试了无效缓存并重新启动,但所有这些都无济于事。解决方法是:

  1. 关闭项目
  2. 删除.idea文件夹
  3. 新建 -> 从现有源代码创建项目
  4. 我在对话框中选择了pom.xml,但我不确定这是否必要。
  5. 构建 -> 构建项目

不确定为什么.idea文件夹会出问题或者为什么会影响后续项目。


0

手动添加spring-context-5.1.6.RELEASE.jar文件到外部库中,然后尝试。这样可以解决问题。


0

点击“文件”->“无效缓存并重启”并不能解决问题。但是,我通过删除自动生成的.iml文件来修复了它,但我并不完全理解为什么这是问题的原因。


0

在我的情况下,其中一个maven软件包损坏了,并且未正确安装(在.m2目录下) ,从而导致上述问题。实际上,由于某些未知原因(可能是下载期间的网络波动或其他原因),已安装的jar文件为空。

因此,我从.m2目录中删除了软件包文件夹,并在下一个mvn clean install 上进行了下载和安装,然后构建问题得到解决。

但是,我通过从终端(在Intelij之外)执行mvn clean install 来查看了实际错误。当我在Intelij内部执行mvn clean install 时,它没有显示给我实际的错误,而只是显示了无法访问.... 错误。

因此,如果您尝试了所有提到的解决方案都没有用,请只需在文件资源管理器中导航到源代码目录,在终端中输入mvn clean install。然后它会向您提供损坏的软件包名称。因此,您可以简单地手动删除它们,并通过键入mvn clean install 再次安装它们。


0

当我运行mvn test时,测试会运行。但如果我直接从IDE作为junit测试运行它,则不会运行。我的问题类似,但不是完全相同的类找不到。


0
当您从下载的资源导入项目时,请选择pom.xml本身而不是项目目录,这将设置项目。

0
首先,如果你使用的是IntelliJ,请不要忘记安装Maven/Gradle IntelliJ插件。 然后,如果仍然看到相同的错误,请尝试按照建议导入库。 最后,清除无效缓存并重新启动IntelliJ,它将按预期工作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接