Java同目录调用自定义类编译报cannot find symbol错误怎么解决
报错原因
Java 11及以上版本支持的单文件直接运行命令java xxx.java仅会编译当前指定的单个源文件,不会自动编译同目录下依赖的Programmer.java文件,因此无法识别Programmer类符号。
此外Java对文件名大小写敏感,你执行命令时写的java main.java需要和实际文件名Main.java大小写保持一致。
解决方案
方案1:先批量编译所有源文件再运行(推荐)
- 执行编译命令,编译当前目录下所有Java源文件:
javac *.java
- 编译完成后执行主类即可:
java Main
方案2:运行时显式指定所有关联的源文件
直接执行如下命令即可正常运行:
java Main.java Programmer.java
补充说明
如果两个Java文件顶部声明了自定义包名,需要保证编译后的.class文件目录结构和包名层级完全匹配,运行时需要写全限定类名(包名.类名)执行。
内容的提问来源于stack exchange,提问作者Zakariae Lajoui
相关产品推荐
相关产品推荐

