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

如何通过终端调用Java方法?运行报cannot find symbol错误如何解决

解决步骤

错误原因

你遇到的报错是因为Java 11及以上版本提供的单文件直接运行机制(即java 文件名.java)仅会编译、处理你指定的这一个源文件,不会自动关联同目录下的其他Java源文件,因此编译器在编译B.java时找不到A类的定义。另外你提供的两份代码都缺少ArrayList的导入声明,即使解决A类找不到的问题也会触发新的编译错误。

修复&运行步骤

第一步:补全代码的导入声明

在A.java和B.java的第一行都添加如下导入语句:

import java.util.ArrayList;

修复后的完整代码示例:
A.java:

import java.util.ArrayList;
public class A{
   public static int promedio(ArrayList<Integer> array) {
       int sum=0,prom=0;
       for(int i=0 ; i < array.size() ; i++) {
           sum+=array.get(i);
       }
       prom = sum/array.size();
       return prom;
   }
}

B.java:

import java.util.ArrayList;
public class B{
    public static void main(String[] args) {
        ArrayList<Integer> array = new ArrayList<Integer>();
        //Convert to int the string from args
        for (int i = 0; i < args.length; i++) {
            int StrToInt= Integer.parseInt(args[i]);
            array.add(StrToInt);
        }
        //call method class A
        int returnPromedio = A.promedio(array);
        System.out.println("Prom: "+returnPromedio);
    }
}

第二步:编译所有源文件后运行

不要直接用java B.java的单文件运行模式,改为先批量编译所有依赖的源文件,再运行主类:

  • 打开终端,切换到A.java、B.java所在的目录
  • 执行编译命令:javac A.java B.java,执行完成后同目录会生成A.class、B.class两个字节码文件
  • 执行运行命令:java B 200 100,即可得到输出结果Prom: 150

备选方案(单文件运行)

如果你坚持要用java xx.java的单文件运行方式,可以把A类的代码合并到B.java中,去掉A类的public修饰符即可,示例如下:

import java.util.ArrayList;
class A{
   public static int promedio(ArrayList<Integer> array) {
       int sum=0,prom=0;
       for(int i=0 ; i < array.size() ; i++) {
           sum+=array.get(i);
       }
       prom = sum/array.size();
       return prom;
   }
}
public class B{
    public static void main(String[] args) {
        ArrayList<Integer> array = new ArrayList<Integer>();
        for (int i = 0; i < args.length; i++) {
            int StrToInt= Integer.parseInt(args[i]);
            array.add(StrToInt);
        }
        int returnPromedio = A.promedio(array);
        System.out.println("Prom: "+returnPromedio);
    }
}

保存为B.java后直接执行java B.java 200 100即可正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 22:15:01