命令行运行Java代码报cannot find symbol但VS Code调试正常
解决命令行编译找不到User类的问题
问题根源
单独用命令行编译CS_214_Project.java时,javac没处理同目录下的User类依赖,而VS Code会自动搞定依赖编译和类路径配置,所以两边表现不一样。
具体解决步骤
1. 批量编译目录下所有Java文件
先进入项目根目录,执行下面的命令,一次性编译src/main/java/pa4目录里的所有.java文件:
javac src/main/java/pa4/*.java
要是你已经移除了包声明,就改成编译该目录下所有文件:
javac src/main/java/*.java
2. 正确运行编译后的类
编译完之后,必须回到项目根目录,用完整类名运行:
- 保留
pa4包声明的情况:
java pa4.CS_214_Project
- 移除包声明的情况:
java CS_214_Project
划重点:运行时不能加
.java后缀,而且得在能找到class文件的路径下执行。
3. 手动指定类路径(备选方案)
要是上面的方法不好使,就手动用-cp参数指定类路径,让javac能找到User类:
javac -cp src/main/java src/main/java/pa4/CS_214_Project.java
运行时同样指定类路径:
java -cp src/main/java pa4.CS_214_Project
额外要检查的点
- 两个类的包声明必须完全一致,比如都写了
package pa4;,且文件确实放在src/main/java/pa4目录里。 - 文件名和类名要严格对应(Java大小写敏感,比如
User.java必须对应public class User)。
内容的提问来源于stack exchange,提问作者TiTanTeThaR
相关产品推荐
相关产品推荐

