gpt4 book ai didi

java - 两个java文件。使用 main 方法运行类并尝试从其他文件访问方法时出现 IllegalAccessError

转载 作者:行者123 更新时间:2023-12-02 00:53:15 25 4
gpt4 key购买 nike

学习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");
}
}

请问有什么帮助吗?

最佳答案

实际问题

我得到了完全相同的错误*做了一些非常愚蠢的事情:

我尝试将文件作为 java {main-class}.java 运行。就这么简单!

相反,请确保将其简单地运行为 java {main-class}


*具体来说,我的错误格式与你的一样:

Exception in thread "main" java.lang.IllegalAccessError: failed to access class {pack.other-class} from class {pack.main-class} ({pack.other-class} is in unnamed module of loader 'app'; {pack.main-class} is in unnamed module of loader com.sun.tools.javac.launcher.Main$MemoryClassLoader @29f69090)

  at {pack.main-class}.{who-cares-where}
  at {pack.main-class}.{who-cares-why}
             . . .


额外建议

如果您只编译 {main-class},您可能会在同一问题上遇到类似的恼人错误,即无法访问同一目录中的包。

所以不是javac {directory}/{main-class}.java

一定要同时编译所有这些,这样交叉引用就不会出现问题:
  javac {directory}/*.java


具体操作

这只是一个愚蠢的命令行错误。如果它也发生在 IntelliJ 中,正如您所说,这不是您的问题。但是,我希望它至少对遇到您的问题并出现此错误的其他人有帮助!

关于java - 两个java文件。使用 main 方法运行类并尝试从其他文件访问方法时出现 IllegalAccessError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57841546/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com