Java封装场景下Cannot Find Symbol错误的求助问询
问题解决:编译Java包类时提示"cannot find symbol"
问题场景
文件夹结构:
Day12 ├── Account.java └── AccountMain.java
Account.java代码:
package Day12; public class Account { int id; String name; double balance; public int getId() { return id; } public String getName() { return name; } public double getBalance() { return balance; } public void setId(int id){ this.id = id; } public void setName(String name) { this.name = name; } public void setBalance(double balance) { this.balance = balance; } }
AccountMain.java代码:
package Day12; public class AccountMain { public static void main(String[] args) { Account acc1 = new Account(); acc1.setId(1); acc1.setName("John"); acc1.setBalance(1000.0); System.out.println("Account ID: " + acc1.getId()); System.out.println("Account Name: " + acc1.getName()); System.out.println("Account Balance: " + acc1.getBalance()); } }
编译错误:
AccountMain.java:5: error: cannot find symbol
Account acc1 = new Account();
^ symbol: class Account location: class AccountMain
AccountMain.java:5: error: cannot find symbol
Account acc1 = new Account();
^ symbol: class Account location: class AccountMain
2 errors
错误原因
编辑器会自动识别项目包结构,把项目根目录加入类路径,所以能找到Account类;但javac命令默认只会在当前目录查找类,而你的两个类都属于Day12包,编译器需要从包的根路径(也就是Day12文件夹的父目录)才能正确解析Day12.Account这个类。
解决方法
方法一:从包根目录编译运行
- 打开命令行,切换到Day12的父目录(比如Day12在
D:\projects下,就切换到D:\projects) - 编译所有相关文件:
javac Day12/*.java - 运行主类:
java Day12.AccountMain
方法二:在Day12目录下指定类路径编译
- 保持在Day12目录下,先编译所有文件:
javac -cp . Account.java AccountMain.java - 运行时指定上级目录为类路径:
java -cp .. Day12.AccountMain
内容的提问来源于stack exchange,提问作者MeLoveCats
相关产品推荐
相关产品推荐

