87 votes

java.lang.IllegalAccessError: tentative d'accès à la méthode

Je reçois une exception et je ne trouve pas la raison.

L'exception que je reçois est:

java.lang.IllegalAccessError: tentative d'accès à la méthode Connected.getData (Ljava / lang / String;) Ljava / sql / ResultSet; de classe B

La méthode est publique.

 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;
  try 
  {
     prepareConnection();
     stmt = conn.createStatement();
     stmt.execute(sql);
     rs = stmt.getResultSet();
  }
  catch (SQLException E) 
      {
    System.out.println("Content.getData Error");
    E.printStackTrace();
       }
return rs;
}
 

J'utilise Apache Tomcat 5.5.12 et JAVA 1.6

120voto

s_t_e_v_e Points 936

Cela se produit lors de l'accès à une méthode de périmètre de package d'une classe qui se trouve dans le même package mais dans un jar et un chargeur de classes différents. Plus ici

89voto

Andrzej Doyle Points 52541

Vous êtes presque certainement à l'aide d'une version différente de la classe lors de l'exécution de celui que vous attendez. En particulier, la classe d'exécution serait différent de celui que vous avez compilé contre (sinon cela aurait causé une erreur de compilation) - a la méthode jamais été private? Avez-vous des anciennes versions des classes/pots sur votre système n'importe où?

Comme la javadoc IllegalAccessError de l'état,

Normalement, cette erreur est capturé par le compilateur; cette erreur peut se produire uniquement au moment de l'exécution si la définition d'une classe a incompatibilité changé.

Je serais certainement regarder votre chemin de classe et de vérifier si elle possède des surprises.

3voto

Shadow Points 2177

Par chance, getData est protégé si oui, le rendre public peut poser problème dans JAVA 1.6, mais il n’est pas présent dans 1.5x.

Voici ce que j'ai pour votre erreur Erreur d' accès illégal

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X