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

同一包下编译Java类出现cannot find symbol错误求助

解决Java编译"cannot find symbol"找不到同包类的问题

问题原因

你虽然提前编译了Course.java,但在包对应的子目录下单独编译CourseController.java时,Java编译器会根据包名com.mjfirstSBv5.sprintboot.learnspringboot去层级匹配的目录里查找Course.class文件,而你编译生成的Course.class就在当前目录,不符合编译器的查找规则,因此出现找不到符号的错误。

解决方法

方法一:回到包根目录统一编译

  1. 切换到Java源码的根目录,也就是路径:D:\AutoQA_Progress\intg-mock-service\learn-spring-boot\src\main\java
  2. 执行以下命令一次性编译两个类:
javac com/mjfirstSBv5/sprintboot/learnspringboot/Course.java com/mjfirstSBv5/sprintboot/learnspringboot/CourseController.java

编译器会自动按照包结构生成对应层级目录,并将.class文件放入正确位置,后续就能正常识别同包类。

方法二:指定类路径在当前目录编译

如果不想切换目录,在com/mjfirstSBv5/sprintboot/learnspringboot目录下,编译CourseController.java时指定类路径为源码根目录:

javac -cp ../../../../../../ CourseController.java

这里的../../../../../../是从当前目录回到src/main/java的相对路径,能让编译器找到已编译的Course类文件。

额外提示

  • 尽量避免在包的子目录下单独编译单个类,回到根目录统一编译更符合Java包结构规范。
  • 后续使用IDE(如IntelliJ IDEA、Eclipse)开发时,这类编译问题会由IDE自动处理,无需手动执行javac命令。

内容的提问来源于stack exchange,提问作者nick nick

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 05:07:00