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

Java IllegalAccessError问题:同目录类命令行调用方法报错

问题分析与解决

问题根源

  • 方法权限不足:Student类的getStudtName()方法未指定访问修饰符,默认是包私有权限。虽然同一目录下的类默认同属一个包,但命令行特殊的类加载机制会触发权限校验失败。
  • 类加载器隔离:当使用java main.java这种单文件直接运行方式时,main类和依赖的Student类会被不同类加载器加载,导致JVM认为跨类加载器访问包私有方法是非法操作,抛出IllegalAccessError。

解决方法

1. 修正方法访问权限

给getStudtName()方法添加public修饰符,确保跨类加载器可访问:

public class Student {
    String name="xdxd";
    int studentNo;
    String classes;
    String course1;
    String course2;
    String course3;
    double stuAvg;
    boolean isPassed;
    
    // 添加public修饰符
    public void getStudtName(){
        System.out.println(this.name);
    }
}

2. 使用标准编译运行流程

避免单文件直接运行,先编译所有类再执行:

  • 编译两个类:
    javac Student.java main.java
    
  • 运行主类:
    java main
    

可选规范调整

按照Java编码规范,主类名应使用大驼峰命名,将main类重命名为Main,文件名改为Main.java,后续命令调整为:

javac Student.java Main.java
java Main

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 13:50:20