SpringBoot实现CommandLineRunner时出现包不存在错误求助
问题排查:Spring Boot主类实现CommandLineRunner时无法识别Model和Repository
环境与问题
使用Java 17、Spring Boot 3.0.4开发API项目,主类实现CommandLineRunner接口时出现编译错误,提示找不到Model和Repository相关包及类;移除CommandLineRunner相关代码后,项目可正常编译运行。
主类代码
package com.hsnhut.realestateapi; import com.hsnhut.realestateapi.model.Seller; import com.hsnhut.realestateapi.repository.SellerRepository; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import java.util.HashSet; @SpringBootApplication(scanBasePackages = {"com.hsnhut.realestateapi"}) public class RealestateapiApplication implements CommandLineRunner{ private final SellerRepository sellerRepository; public RealestateapiApplication(SellerRepository sellerRepository) { this.sellerRepository = sellerRepository; } public static void main(String[] args) { SpringApplication.run(RealestateapiApplication.class, args); } @Override public void run(String... args) throws Exception { sellerRepository.save(new Seller("","Hasan","Hut",new HashSet<>())); } }
报错信息
- java: package com.hsnhut.realestateapi.model does not exist
- java: package com.hsnhut.realestateapi.repository does not exist
- java: cannot find symbol
symbol: class SellerRepository
location: class com.hsnhut.realestateapi.RealestateapiApplication - java: cannot find symbol
symbol: class SellerRepository
location: class com.hsnhut.realestateapi.RealestateapiApplication
排查步骤
1. 核对文件目录结构
确认Seller和SellerRepository的文件路径匹配包声明:
Seller.java需放在src/main/java/com/hsnhut/realestateapi/model/目录下SellerRepository.java需放在src/main/java/com/hsnhut/realestateapi/repository/目录下
2. 检查类的包声明
打开对应文件,确认顶部包声明正确:
Seller.java的包声明应为package com.hsnhut.realestateapi.model;SellerRepository.java的包声明应为package com.hsnhut.realestateapi.repository;
3. 确认Repository的注解配置
SellerRepository需继承Spring Data的JpaRepository或CrudRepository(例如public interface SellerRepository extends JpaRepository<Seller, String>),Spring Boot会自动识别这类接口为Repository Bean;也可手动添加@Repository注解。
4. 清理编译缓存
- Maven项目:执行
mvn clean compile命令,清理旧编译文件并重新编译 - Gradle项目:执行
./gradlew clean build命令 - IDE环境:执行清理+重建操作,比如IntelliJ IDEA中选择
Build -> Clean Project,再执行Build -> Rebuild Project
5. 简化@SpringBootApplication配置
主类位于根包com.hsnhut.realestateapi下,Spring Boot默认会扫描该包及其所有子包的组件。可尝试移除scanBasePackages属性,避免手动配置时的拼写错误:
@SpringBootApplication public class RealestateapiApplication implements CommandLineRunner{ // ... 其余代码不变 }
内容的提问来源于stack exchange,提问作者Hiedrass
相关产品推荐
相关产品推荐

