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

Posted

技术标签:

【中文标题】无法访问 org.springframework.context.ConfigurableApplicationContext 类文件【英文标题】:cannot access org.springframework.context.ConfigurableApplicationContext class file 【发布时间】:2016-12-15 17:16:19 【问题描述】:

我是 Spring Boot 新手,在尝试使用 Spring 初始化程序在 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 添加了整个 POM 对我来说听起来像是一个损坏的下载。尝试删除 Maven 的缓存,以便强制重新下载 jar。 根据@AndyWilkinson 的建议,您可以尝试使用mvn dependency:purge-local-repository 清除缓存。 @AndyWilkinson 我试过了,但运行后出现同样的错误。 【参考方案1】:

我可以通过以下步骤修复它:

    文件 -> 使缓存无效并重新启动 文件 -> 新建 -> 来自现有源的项目 只选择pom.xml文件(不是整个项目目录) 加载项目。项目将自动设置。

【讨论】:

我遇到了类似的问题,当我启用设置值自动导入 Maven 项目时,它已得到修复。这是在构建、执行、部署 |构建工具 |马文 |正在导入。 是的,同样的!想法是从 pom.xml 文件中将应用程序作为 maven 项目打开。 我想补充一点,这也是 Gradle 项目的一个问题,通过选择 build.gradle 文件而不是基本目录来解决。 是的,如果是 maven,选择 pom.xml 文件。【参考方案2】:

我在 Spring Boot 应用程序中使用 IntelliJgradle 并遇到了同样的问题。 我通过删除类路径下自动生成的 .iml 文件解决了这个问题。 希望对后来的人有所帮助。

【讨论】:

您能否详细说明解决此问题的方法 @SGaber :如果您使用从 initializr 解压缩的目录导入项目,则删除 .idea 目录。然后,正如Nanor在另一个答案中提到的那样。使用 build.gradle 文件导入项目。 它对我有用,我将项目目录导入为 gradle 并删除了 main.iml 文件【参考方案3】:

对我来说,第一个答案仅在将子项目作为新项目在新窗口中打开时才有效。

您可以尝试在您的子项目src\main\main.iml 中删除main.imlxxx.iml。这对我有用

编辑:别担心,main.iml 是由 idea 自动生成的

【讨论】:

【参考方案4】:

我正在使用 IntelliJ Idea,如果我使用“导入项目”,我会遇到同样的问题。即使使用 File -> Invalidate Cache and Restart 问题也没有解决。

我关闭了项目,将其从列表中删除。

然后使用“打开”而不是“导入项目”按钮来导入项目。它工作得很好。希望它可以帮助某人。

【讨论】:

【参考方案5】:

对我有用的是运行

mvn package 

mvn dependency:purge-local-repository    

并尝试使缓存无效/重新启动 intellij 想法。希望有所帮助

【讨论】:

【参考方案6】:
    如第一个答案所述,您可以尝试使缓存无效并重新启动。我试过了,但它对我不起作用。我认为这是一个 IntelliJ 问题。 如果包有错误,请检查您的 maven 依赖项。 我重新导入了所有 maven 依赖项,并检查了 pom.xml 文件中版本号的同步。这能够解决我自己的问题。

【讨论】:

【参考方案7】:

我的解决方法:

右键项目/模块->打开模块设置->模块 只选择正确的模块

【讨论】:

【参考方案8】:

当我将鼠标悬停在 main 方法(Intellij 2019.3 社区版)中带红色下划线的 SpringApplication.run 调用上时,我在工具提示中看到了同样的错误,尽管构建似乎进行得很好。波浪状的红色下划线让我很恼火。

上述解决方案似乎都没有帮助。

最后,我进入“项目结构”对话框,发现我修复了两件事:

1) 我已将主模块命名为 teamTest,并担心“测试”后缀可能会触发一些自动配置行为,并且

2) 我的模块结构有点不对称(teamTest 模块植根于项目根目录,测试模块植根于 src/test 子目录)

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

为了更好的衡量,我还: - 关闭项目 - 从历史中删除它 - 封闭的 Intellij - 在 gitbash 窗口中运行 mvn 依赖项:purge-local-repository

在再次运行 Intellij 并再次打开项目之前。

红色波浪下划线消失了。

呸!希望这对其他人有帮助...

【讨论】:

【参考方案9】:

对我来说,只需以下修复它(IDE​​:Intellij):

文件 -> 使缓存无效并重新启动

【讨论】:

【参考方案10】:

安装 Maven 命令行工具,然后运行此命令

mvn clean install

在重新启动想法之后,它应该可以按预期工作。

【讨论】:

【参考方案11】:

我在通过https://start.spring.io/ 创建项目时遇到了同样的错误。在我选择 Java 8 而不是 Java 11 之后,一切都运行良好。也许这会帮助像我这样的其他初学者......

【讨论】:

【参考方案12】:

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

【讨论】:

【参考方案13】:

对我来说,它是删除 .idea 文件,然后再次选择 pom.xml 文件打开项目

【讨论】:

【参考方案14】:

我试图使缓存无效并重新启动,但没有奏效。 问题是版本冲突

我解决了这个问题

    转到 https://start.spring.io/ 选择您的 java 和 spring 版本

    转到页面底部的“探索”

    复制声明版本的代码

    <modelVersion>4.0.0</modelVersion>
    
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.5.1</version>
    <relativePath/> <!-- lookup parent from repository -->
  </parent>
  <groupId>com.example</groupId>
  <artifactId>demo</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>demo</name>
  <description>Demo project for Spring Boot</description>
  <properties>
    <java.version>16</java.version>
  </properties>
    使缓存失效并重新启动

注意:确保将 roupId 和 artificatId 更改为您的

【讨论】:

【参考方案15】:

File -> Invalidate Cache and Restart 无助于解决问题。但是,我能够通过删除自动生成的 .iml 文件来修复它,但我不完全明白为什么会出现这个问题。

【讨论】:

【参考方案16】:

在我的情况下,其中一个 maven 软件包已损坏且未正确安装(在 .m2 目录下)并导致上述问题。实际上安装的jar文件是空的,原因不明(可能是下载过程中网络波动或其他原因)

所以我从 .m2 目录中删除了包文件夹,并在下一个 mvn clean install 上下载并正确安装并解决了构建问题。

但是,我通过从终端(在 Intelij 之外)执行 mvn clean install 看到了实际错误。当我从 Intelij 内部执行 mvn clean install 时,它没有向我显示实际错误,而只是向我显示 cannot access .... 错误。

因此,如果上述解决方案都不适合您,只需在文件资源管理器中导航到您的源代码目录,终端类型为mvn clean install。然后它会给你损坏包的名称。因此,您可以简单地手动删除它们,然后通过键入 mvn clean install 重新安装它们

【讨论】:

【参考方案17】:

在外部库上手动添加 spring-context-5.1.6.RELEASE.jar 文件并尝试。它解决了问题。

【讨论】:

【参考方案18】:

删除java和test目录下的.iml文件

【讨论】:

以上是关于无法访问 org.springframework.context.ConfigurableApplicationContext 类文件的主要内容,如果未能解决你的问题,请参考以下文章

java: 无法访问org.springframework.boot.SpringApplication ,错误的类文件:XXX,类文件具有错误的版本 61.0, 应为 52.0

异常解决java: 无法访问org.springframework.boot.SpringApplication的解决方案

org.springframework.security.web.access.AccessDeniedException:访问被拒绝

ivy 无法解析 org.springframework 依赖项

org.springframework.cglib.core.ReflectUtils 的非法反射访问 $1

无法创建 [org.springframework.orm.jpa.SharedEntityManagerCreator] 类型的内部 bean '(inner bean)'?