我有一个班级
public Class Foobar{
public void methodA();
}
现在我在另一个类中有一个方法
public static final void callFooBar(){
Foobar foobar = new Foobar();
foobar.methodA(); <-- error here
}
Error: Exception in thread "main" java.lang.IllegalAccessError: tried to access method package.FooBar.methodA([Ljava/lang/String;)V from class package.mainclass
任何建议 (对不起,这里有新手)
答案 0 :(得分:5)
首先,区分大小写。当您的班级名为FooBar()
Foobar()
也许您在运行时使用的是不同版本的类,而不是您期望的类。特别是,运行时类与您编译的运行时类不同(否则会导致编译时错误) - 该方法是否曾被私有?您的系统上是否有旧版本的课程/罐子?
作为IllegalAccessError
州的javadoc,
通常,编译器会捕获此错误;如果类的定义发生不兼容的更改,则此错误只能在运行时发生。
我一定会查看你的类路径并检查它是否有任何意外。
答案 1 :(得分:2)
Foobar之前有void methodA(String s)
。当时编写了Foobar使用类。
在将methodA的签名更改为void methodA()
之后,应该重新编译此using类。
这没有发生,因而错误。
线索:尝试访问方法包.FooBar.methodA([Ljava / lang / String;)V
这是void methodA(java.lang.String)