非法访问错误java

时间:2013-01-05 00:19:28

标签: java

我有一个班级

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

任何建议 (对不起,这里有新手)

2 个答案:

答案 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)