yossi yossi - 1 year ago 42
Java Question

java.lang.IllegalAccessError: tried to access method

I am getting an exception and I can't find the reason of it.

The exception I get is :

java.lang.IllegalAccessError: tried to access method Connected.getData(Ljava/lang/String;)Ljava/sql/ResultSet; from class B

The method is public.

public class B
public void myMethod()
Connected conn = new Connected(); // create a connected class in order to connect to The DB
ResultSet rs = null; // create a result set to get the query result
rs = conn.getData(sql); // do sql query

public class Connected
public ResultSet getData(String sql)
ResultSet rs = null;
stmt = conn.createStatement();
rs = stmt.getResultSet();
catch (SQLException E)
System.out.println("Content.getData Error");
return rs;

i am using apache tomcat 5.5.12
and JAVA 1.6


You are almost certainly using a different version of the class at runtime to the one you expect. In particular, the runtime class would be different to the one you've compiled against (else this would have caused a compile-time error) - has that method ever been private? Do you have old versions of the classes/jars on your system anywhere?

As the javadocs for IllegalAccessError state,

Normally, this error is caught by the compiler; this error can only occur at run time if the definition of a class has incompatibly changed.

I'd definitely look at your classpath and check whether it holds any surprises.