Skip to content
Advertisement

Two java files. Getting IllegalAccessError when running class with main method trying to access a method from the other file

Learning Java. I have two files, each containing one java class. When I run the file with the main method, I get the following error:

Exception in thread “main” java.lang.IllegalAccessError: failed to access class TapeDeck from class TapeDeckTestDrive (TapeDeck is in unnamed module of loader ‘app’; TapeDeckTestDrive is in unnamed module of loader com.sun.tools.javac.launcher.Main$MemoryClassLoader @18bf3d14) at TapeDeckTestDrive.main(TapeDeckTestDrive.java:3)

class TapeDeckTestDrive{
  public static void main(String[] args){
    TapeDeck t = new TapeDeck();
    t.canRecord = true;
    t.playTape();

    if (t.canRecord == true) {
        t.recordTape();
    }
  }
}
class TapeDeck {
  boolean canRecord = false;
  void playTape(){

    System.out.println("tape playing");
  }
  void recordTape(){

    System.out.println("tape recording");
  }
}

Any help please?

Advertisement

Answer

Make sure each class is in the same folder, since the error is saying TapeDeckTestDrive can not find TapeDeck. I would recommend starting out with an IDE like Eclipse since it will help you focus more on coding and less with folder problems.

I know your code is all good (in java 8 at least) since when I copied it in eclipse it works no problem, meaning it has to be a folder problem, a problem with the installed version of java, or the way you are running the code is not working for some reason. If both files are in the exact same folder then I would make sure your java version says 1.8 something in the system files (Program Files(x86) most likely in windows), if it does not say that version then it could be another problem with the code and syntax for that version. Another thing that might help is to put public behind the “class” on the first line of each class and make the Boolean public. This might be a syntax requirement on other versions of java or something that is needed when running off command prompt.

User contributions licensed under: CC BY-SA
5 People found this is helpful
Advertisement