【发布时间】:2019-04-22 14:27:01
【问题描述】:
学习 Java。我有两个文件,每个文件都包含一个 java 类。当我使用 main 方法运行文件时,出现以下错误:
线程“main”java.lang.IllegalAccessError 中的异常:无法从类 TapeDeckTestDrive 访问类 TapeDeck(TapeDeck 位于加载器“app”的未命名模块中;TapeDeckTestDrive 位于加载器 com 的未命名模块中。 sun.tools.javac.launcher.Main$MemoryClassLoader @18bf3d14) 在 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");
}
}
有什么帮助吗?
【问题讨论】:
-
您是使用命令提示符还是任何 IDE 来运行您的代码?
-
错误信息抱怨类
TapeDeckcTestDrive。你是如何运行你的代码的?你打错了吗?据我所知,您发布的代码没有错误。 -
你在同一个包中有这些类吗?如果没有,您必须设置“公共”所有方法和变量...从 oracle 中查看本教程...docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html
-
@JeetKumar 我已经尝试过 IntelliJIdea 和命令提示符(我创建了 2 组 .java 文件,因此它们不会访问相同的文件)
-
@tommybee 我将 public 添加到类/方法和布尔值。现在最初的错误消失了,但错误现在是在访问该方法时。见下文:线程“main”java.lang.IllegalAccessError 中的异常:类 TapeDeckTestDrive 试图访问方法 TestDrive.playTape()V(TapeDeckTestDrive 位于加载程序 com.sun.tools.javac.launcher 的未命名模块中.Main$MemoryClassLoader @18bf3d14; TestDrive 位于 TapeDeckTestDrive.main(TDTestDrive.java:5) 的加载程序“app”的未命名模块中
标签: java methods compiler-errors