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.

Leave a Reply

Your email address will not be published. Required fields are marked *