gpt4 book ai didi

java - 线程 "main"java.lang.IllegalAccessError : failed to access class 中出现异常

转载 作者:行者123 更新时间:2023-12-01 17:38:46 26 4
gpt4 key购买 nike

因此,我尝试运行一个名为 CountdownTree.java 的特定文件,该文件继承了 comp2402a4 包中的一堆其他文件的函数。

这些都是我的导师提供的起始文件,我应该添加到其中,并且运行这些文件不应该出现任何错误。我使用“javac comp2402a4/CountdownTree.java”编译它,它编译得很好,没有任何问题。但是当我尝试使用“java comp2402a4/CountdownTree.java”运行它时,出现错误:

Exception in thread "main" java.lang.IllegalAccessError: failed to access class 
comp2402a4.DefaultComparator from class comp2402a4.CountdownTree (comp2402a4.DefaultComparator is in
unnamed module of loader 'app'; comp2402a4.CountdownTree is in unnamed module of loader
com.sun.tools.javac.launcher.Main$MemoryClassLoader @21507a04)
at comp2402a4.CountdownTree.<init>(CountdownTree.java:26)
at comp2402a4.CountdownTree.main(CountdownTree.java:53)

我完全不知道是什么原因造成的,我真的很沮丧,因为我需要运行这个文件,以便我可以启动我的项目。我尝试谷歌搜索但无法弄清楚出了什么问题。对于可能出现的问题,我非常感谢任何帮助。

CountdownTree.java:

package comp2402a4;

import java.util.Random;
import java.util.SortedSet;
import java.util.TreeSet;

/**
* An unfinished implementation of an Countdown tree (for exercises)
* @author morin
*
* @param <T>
*/
public class CountdownTree<T> extends
BinarySearchTree<CountdownTree.Node<T>, T> implements SSet<T> {

// countdown delay factor
double d;

public static class Node<T> extends BSTNode<Node<T>,T> {
int timer; // the height of the node
}

public CountdownTree(double d) {
this.d = d;
sampleNode = new Node<T>();
c = new DefaultComparator<T>();
}

public boolean add(T x) {
Node<T> u = new Node<T>();
u.timer = (int)Math.ceil(d);
u.x = x;
if (super.add(u)) {
// add some code here
return true;
}
return false;
}

public void splice(Node<T> u) {
Node<T> w = u.parent;
super.splice(u);
// add some code here (we just removed u from the tree)
}

protected void explode(Node<T> u) {
// Write this code to explode u
// Make sure to update u.parent and/or r (the tree root) as appropriate
}

// Here is some test code you can use
public static void main(String[] args) {
Testum.sortedSetSanityTests(new SortedSSet<Integer>(new CountdownTree<Integer>(1)), 1000);
Testum.sortedSetSanityTests(new SortedSSet<Integer>(new CountdownTree<Integer>(2.5)), 1000);
Testum.sortedSetSanityTests(new SortedSSet<Integer>(new CountdownTree<Integer>(0.5)), 1000);

java.util.List<SortedSet<Integer>> ell = new java.util.ArrayList<SortedSet<Integer>>();
ell.add(new java.util.TreeSet<Integer>());
ell.add(new SortedSSet<Integer>(new CountdownTree<Integer>(1)));
ell.add(new SortedSSet<Integer>(new CountdownTree<Integer>(2.5)));
ell.add(new SortedSSet<Integer>(new CountdownTree<Integer>(0.5)));
Testum.sortedSetSpeedTests(ell, 1000000);
}
}

如果您想尝试运行它,这里有一个包含包中所有文件的文件夹:

https://drive.google.com/drive/folders/1Cu0qNud7-1ACqLvyLahKiVVk0aHcLMEr?usp=sharing

最佳答案

实际问题

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

我尝试将文件作为 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


具体操作

我从您的 Google 云端硬盘文件夹下载,以确保您也遇到此错误,原因仅仅是愚蠢的命令行困惑。但是,我遇到了一个完全不相关的错误,所以我想您已经更改了文件。然而,我希望这至少对其他人有用,即使不是你!

关于java - 线程 "main"java.lang.IllegalAccessError : failed to access class 中出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61000231/

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