You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot项目在IntelliJ中无法运行,报NoClassDefFoundError错误

Spring Boot项目IntelliJ右键运行主类报NoClassDefFoundError,mvn命令可正常运行

错误信息

Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/boot/SpringApplication
    at com.shivam.org.myapp.MyappApplication.main(MyappApplication.java:10)
Caused by: java.lang.ClassNotFoundException: org.springframework.boot.SpringApplication
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
    ... 1 more 

场景说明

  • 环境:Spring Boot 3.0.6、Java 17,项目由Spring Initializr生成后导入IntelliJ
  • 现象:通过mvn spring-boot:run可正常启动项目,但右键运行MyappApplication.java主类时抛出上述异常
  • 已尝试操作:设置JAVA_HOME为JDK17、删除本地.m2仓库内容、重启IntelliJ、移除之前添加的actuator和devtools依赖,问题仍未解决

Maven依赖树

PS C:\Users\shiva\Documents\spring-projects\myapp\myapp> mvn dependency:tree
[INFO] Scanning for projects...
[INFO] 
[INFO] ------------------------< com.shivam.org:myapp >------------------------
[INFO] Building myapp 0.0.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- maven-dependency-plugin:3.3.0:tree (default-cli) @ myapp ---
[INFO] com.shivam.org:myapp:jar:0.0.1-SNAPSHOT
[INFO] +- org.springframework.boot:spring-boot-starter-web:jar:3.0.6:provided
[INFO] |  +- org.springframework.boot:spring-boot-starter:jar:3.0.6:provided
[INFO] |  |  +- org.springframework.boot:spring-boot:jar:3.0.6:provided
[INFO] |  |  +- org.springframework.boot:spring-boot-autoconfigure:jar:3.0.6:provided
[INFO] |  |  +- org.springframework.boot:spring-boot-starter-logging:jar:3.0.6:provided
[INFO] |  |  |  +- ch.qos.logback:logback-classic:jar:1.4.7:provided
[INFO] |  |  |  |  \- ch.qos.logback:logback-core:jar:1.4.7:provided
[INFO] |  |  |  +- org.apache.logging.log4j:log4j-to-slf4j:jar:2.19.0:provided
[INFO] |  |  |  |  \- org.apache.logging.log4j:log4j-api:jar:2.19.0:provided
[INFO] |  |  |  \- org.slf4j:jul-to-slf4j:jar:2.0.7:provided
[INFO] |  |  +- jakarta.annotation:jakarta.annotation-api:jar:2.1.1:provided
[INFO] |  |  \- org.yaml:snakeyaml:jar:1.33:provided
[INFO] |  +- org.springframework.boot:spring-boot-starter-json:jar:3.0.6:provided
[INFO] |  |  +- com.fasterxml.jackson.core:jackson-databind:jar:2.14.2:provided
[INFO] |  |  |  +- com.fasterxml.jackson.core:jackson-annotations:jar:2.14.2:provided
[INFO] |  |  |  \- com.fasterxml.jackson.core:jackson-core:jar:2.14.2:provided
[INFO] |  |  +- com.fasterxml.jackson.datatype:jackson-datatype-jdk8:jar:2.14.2:provided
[INFO] |  |  +- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.14.2:provided
[INFO] |  |  \- com.fasterxml.jackson.module:jackson-module-parameter-names:jar:2.14.2:provided
[INFO] |  +- org.springframework.boot:spring-boot-starter-tomcat:jar:3.0.6:provided
[INFO] |  |  +- org.apache.tomcat.embed:tomcat-embed-core:jar:10.1.8:provided
[INFO] |  |  +- org.apache.tomcat.embed:tomcat-embed-el:jar:10.1.8:provided
[INFO] |  |  \- org.apache.tomcat.embed:tomcat-embed-websocket:jar:10.1.8:provided
[INFO] |  +- org.springframework:spring-web:jar:6.0.8:provided
[INFO] |  |  +- org.springframework:spring-beans:jar:6.0.8:provided
[INFO] |  |  \- io.micrometer:micrometer-observation:jar:1.10.6:provided
[INFO] |  |     \- io.micrometer:micrometer-commons:jar:1.10.6:provided
[INFO] |  \- org.springframework:spring-webmvc:jar:6.0.8:provided
[INFO] |     +- org.springframework:spring-aop:jar:6.0.8:provided
[INFO] |     +- org.springframework:spring-context:jar:6.0.8:provided
[INFO] |     \- org.springframework:spring-expression:jar:6.0.8:provided
[INFO] \- org.springframework.boot:spring-boot-starter-test:jar:3.0.6:test
[INFO]    +- org.springframework.boot:spring-boot-test:jar:3.0.6:test
[INFO]    +- org.springframework.boot:spring-boot-test-autoconfigure:jar:3.0.6:test
[INFO]    +- com.jayway.jsonpath:json-path:jar:2.7.0:test
[INFO] |  +- net.minidev:json-smart:jar:2.4.10:test
[INFO] |  |  \- net.minidev:accessors-smart:jar:2.4.9:test
[INFO] |  |     \- org.ow2.asm:asm:jar:9.3:test
[INFO] |  \- org.slf4j:slf4j-api:jar:2.0.7:provided
[INFO]    +- jakarta.xml.bind:jakarta.xml.bind-api:jar:4.0.0:test
[INFO] |  \- jakarta.activation:jakarta.activation-api:jar:2.1.1:test
[INFO]    +- org.assertj:assertj-core:jar:3.23.1:test
[INFO] |  \- net.bytebuddy:byte-buddy:jar:1.12.23:test
[INFO]    +- org.hamcrest:hamcrest:jar:2.2:test
[INFO]    +- org.junit.jupiter:junit-jupiter:jar:5.9.2:test
[INFO] |  +- org.junit.jupiter:junit-jupiter-api:jar:5.9.2:test
[INFO] |  |  +- org.opentest4j:opentest4j:jar:1.2.0:test
[INFO] |  |  +- org.junit.platform:junit-platform-commons:jar:1.9.2:test
[INFO] |  |  \- org.apiguardian:apiguardian-api:jar:1.1.2:test
[INFO] |  +- org.junit.jupiter:junit-jupiter-params:jar:5.9.2:test
[INFO] |  \- org.junit.jupiter:junit-jupiter-engine:jar:5.9.2:test
[INFO] |     \- org.junit.platform:junit-platform-engine:jar:1.9.2:test
[INFO]    +- org.mockito:mockito-core:jar:4.8.1:test
[INFO] |  +- net.bytebuddy:byte-buddy-agent:jar:1.12.23:test
[INFO] |  \- org.objenesis:objenesis:jar:3.2:test
[INFO]    +- org.mockito:mockito-junit-jupiter:jar:4.8.1:test
[INFO]    +- org.skyscreamer:jsonassert:jar:1.5.1:test
[INFO] |  \- com.vaadin.external.google:android-json:jar:0.0.20131108.vaadin1:test
[INFO]    +- org.springframework:spring-core:jar:6.0.8:provided
[INFO] |  \- org.springframework:spring-jcl:jar:6.0.8:provided
[INFO]    +- org.springframework:spring-test:jar:6.0.8:test
[INFO]    \- org.xmlunit:xmlunit-core:jar:2.9.1:test
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  1.678 s
[INFO] Finished at: 2023-04-22T19:43:10+05:30
[INFO] ------------------------------------------------------------------------
PS C:\Users\shiva\Documents\spring-projects\myapp\myapp> 

问题根源

从依赖树可以看到,所有核心Spring Boot依赖(如spring-boot-starter-web、spring-boot)的范围都被设置为provided。这个范围表示依赖仅在编译、测试阶段可用,运行时不会被加入类路径。

mvn spring-boot:run命令会自动处理provided范围的依赖,将其纳入运行类路径,所以能正常启动;但IntelliJ右键运行主类时,会使用默认的类路径配置,不会自动包含provided依赖,导致找不到SpringApplication类。

解决步骤

  1. 修改pom.xml依赖范围:移除所有核心Spring Boot依赖的<scope>provided</scope>标记,恢复默认的compile范围(默认可省略不写)。例如:
    <!-- 修改前 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <scope>provided</scope>
    </dependency>
    
    <!-- 修改后 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    
  2. 刷新Maven项目:在IntelliJ的Maven面板中点击「Reload All Maven Projects」按钮,重新加载依赖。
  3. 重新运行主类:右键点击MyappApplication.java选择「Run」,此时类路径会包含所有必要依赖,即可正常启动。

若修改后问题仍存在,可尝试:

  • 执行mvn clean install重新构建项目
  • 在IntelliJ中选择「File → Invalidate Caches... → Invalidate and Restart」清理缓存并重启IDE

内容的提问来源于Stack Exchange,提问作者Shivam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 21:22:02