gpt4 book ai didi

java - 解决 IllegalAccessError

转载 作者:行者123 更新时间:2023-12-02 07:19:45 27 4
gpt4 key购买 nike

我有以下情况:

同一工作区中的 2 个 Eclipse 项目:Apa 和 Bepa(为简洁起见,使用化名)。

Apa 项目引用(包括)Bepa 项目。

我在 Bepa 有一个类 X,具有公共(public)方法 b()。在 Bepa 项目中直接调用 X.b() 可以正常工作。

但是,在 Apa 中创建对 X 实例的引用,然后对此引用调用 b(),会产生以下结果:

Exception in thread "main" java.lang.IllegalAccessError: tried to access method java_cup.runtime.Symbol.<init>(II)V from class de.uni_freiburg.informatik.ultimate.smtinterpol.util.MySymbolFactory$LineColumnSymbol
at de.uni_freiburg.informatik.ultimate.smtinterpol.util.MySymbolFactory$LineColumnSymbol.<init>(MySymbolFactory.java:31)
at de.uni_freiburg.informatik.ultimate.smtinterpol.util.MySymbolFactory.startSymbol(MySymbolFactory.java:95)
at java_cup.runtime.LRParser.parse(LRParser.java:393)
at de.uni_freiburg.informatik.ultimate.smtinterpol.smtlib2.ParseEnvironment.parseStream(ParseEnvironment.java:152)
at de.uni_freiburg.informatik.ultimate.smtinterpol.smtlib2.ParseEnvironment.parseScript(ParseEnvironment.java:118)
at de.uni_freiburg.informatik.ultimate.smtinterpol.smtlib2.SMTLIB2Parser.run(SMTLIB2Parser.java:47)
at de.uni_freiburg.informatik.ultimate.smtinterpol.Main.main(Main.java:121)
at de.uka.ilkd.key.keynterpol.KeYnterpolInterface.main(KeYnterpolInterface.java:36)

据我了解,罪魁祸首是 B 引用的第三方 jar。但是,我一生都无法弄清楚为什么我只能在 Bepa 中使用它,而不能在 Apa 中使用它。任何帮助将不胜感激。

最佳答案

IllegalAccessError 是 IncompatibleClassChangeError 的子类。如果在执行代码时引发 IncompleteClassChangeError,这通常表明您的代码未使用编译时所针对的相同类运行。

在您的情况下,导致抛出 IllegalAccessError 的方法是 a constructor of the java_cup.runtime.Symbol class具有默认可见性:

    Symbol(int sym_num, int state)
{
sym = sym_num;
parse_state = state;
}

调用此构造函数的代码位于不同的包中,因此不应直接调用此构造函数。通常,编译器会捕获此类错误,因为尝试从另一个包访问包私有(private)成员会导致编译器错误。但是,就您而言,您似乎没有任何此类编译器错误。

如果您使用与编译代码相同的类路径运行代码,那么我只能猜测 java_cup.* 类在类路径上出现多次,具有不同的可见性对于上面的构造函数。编译器必须找到 Symbol 类的一个副本,并且该构造函数是公共(public)的,并且 JVM 必须找到一个具有包私有(private)构造函数的副本。

关于java - 解决 IllegalAccessError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14408118/

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