Eclipse调用Java外部类静态方法提示method undefined for type Main报错如何解决
问题解决方法
错误根因
你遇到的报错是因为calculateBMI和interpretBMI两个静态方法定义在BmiFunctions类中,无法在Main类中直接通过方法名调用,必须指定方法所属的类。
解决方案(任选其一即可)
方案1:调用时添加类名前缀(推荐,可读性更高)
- 首先在
Main类的代码最顶部添加导包语句(如果BmiFunctions在part2包下):
import part2.BmiFunctions;
如果BmiFunctions放在默认包下,则不需要写导包语句。
2. 修改你调用方法的两行代码,添加类名前缀:
// 原来的代码 // double BMI2 = calculateBMI(weight,height); // interpretArray[i] = "** The BMI result for " +name+ " ( Age: "+age+ " Weight: "+weight+ " Height: "+height+") is\n"+interpretBMI(BMI2); // 修改后的代码 double BMI2 = BmiFunctions.calculateBMI(weight,height); interpretArray[i] = "** The BMI result for " +name+ " ( Age: "+age+ " Weight: "+weight+ " Height: "+height+") is\n"+BmiFunctions.interpretBMI(BMI2);
方案2:使用静态导入,无需修改原有调用代码
在Main类的代码最顶部添加静态导包语句:
// BmiFunctions在part2包下的写法 import static part2.BmiFunctions.*;
注意:如果BmiFunctions放在默认包下,Java不支持对默认包的类进行静态导入,只能使用方案1。添加静态导包后你原有直接调用方法名的代码可以正常运行。
异常排查
如果修改后仍然报错,在Eclipse中执行以下操作清理缓存:
- 右键当前项目,点击「刷新」
- 点击顶部菜单栏「项目」→「清理」,选择当前项目执行清理
- 重新编译运行项目即可
内容的提问来源于stack exchange,提问作者Rypenguin
相关产品推荐
相关产品推荐

