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

时间:2016-08-09 15:10:31

标签: java maven intellij-idea spring-boot

我是春季启动的新手,在尝试使用spring初始化程序在intellij中构建我的第一个Spring启动项目(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>    

16 个答案:

答案 0 :(得分:13)

我正在为我的Spring Boot应用程序使用 IntelliJ gradle ,并且遇到了相同的问题。

我通过删除类路径下自动生成的 .iml 文件来解决此问题。

希望对以后的人有帮助。

答案 1 :(得分:10)

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

您可以尝试在子项目main.iml中删除xxx.imlsrc\main\main.iml。对我有用

答案 2 :(得分:4)

我可以通过以下步骤对其进行修复:

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

答案 3 :(得分:2)

我的解决方法:

  • 右键单击项目/模块->打开模块设置->模块
  • 仅选择正确的模块

答案 4 :(得分:1)

运行了我的

mvn package 

mvn dependency:purge-local-repository    

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

答案 5 :(得分:1)

当我将鼠标悬停在主要方法(Intellij 2019.3社区版)中带红色下划线的SpringApplication.run调用上时,我在工具提示中看到了相同的错误,尽管构建似乎可以正常进行。波浪状的红色底线使我很烦。

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

最后,我转到“项目结构”对话框,并注意到我已修复的两件事:

1)我已经将主模块命名为teamTest,并担心'Test'后缀可能会触发某些自动配置行为,并且

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

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

为了很好,我还: -关闭项目 -从历史记录中将其删除 -封闭的Intellij -在gitbash窗口中运行mvn依赖项:purge-local-repository

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

红色的波浪形下划线消失了。

Ph!希望这可以帮助其他人...

答案 6 :(得分:1)

对我来说,以下内容对其进行了修复(IDE:Intellij):

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

答案 7 :(得分:1)

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

mvn clean install

在重新启动之后,它应该会按预期工作。

答案 8 :(得分:0)

  1. 如第一个回答所述,您可以尝试使缓存无效并重新启动。我尝试过,但是对我没有用。我认为这是一个IntelliJ问题。
  2. 如果软件包有错误,请检查您的maven依赖项。
  3. 我重新导入了所有我的maven依赖项,还检查了pom.xml文件中版本号的同步。这样就能解决我自己的问题。

答案 9 :(得分:0)

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

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

然后使用“打开”而不是“导入项目”按钮导入项目。工作正常。希望对别人有帮助。

答案 10 :(得分:0)

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

答案 11 :(得分:0)

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

答案 12 :(得分:0)

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

答案 13 :(得分:0)

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

我能够通过以下方式解决问题

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

  2. 转到页面底部的“探索”

  3. 复制声明版本的代码

    <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>
  1. 使缓存无效并重新启动

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

答案 14 :(得分:0)

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

答案 15 :(得分:0)

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

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

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

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

重新安装它们