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

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这个类。

解决方法

方法一:从包根目录编译运行

  1. 打开命令行,切换到Day12的父目录(比如Day12在D:\projects下,就切换到D:\projects)
  2. 编译所有相关文件:
    javac Day12/*.java
    
  3. 运行主类:
    java Day12.AccountMain
    

方法二:在Day12目录下指定类路径编译

  1. 保持在Day12目录下,先编译所有文件:
    javac -cp . Account.java AccountMain.java
    
  2. 运行时指定上级目录为类路径:
    java -cp .. Day12.AccountMain
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 11:00:13