- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下情况:
同一工作区中的 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/
我在运行 Android 仪器测试时收到 IllegalAccessError。 这是 Logcat 输出: java.lang.IllegalAccessError: Class ref in pr
当我运行下面的源代码时,我在 shell 窗口中看到的运行时错误如下: Exception in thread "main" java.lang.IllegalAccessError: tried t
我在我的类方法中遇到了与 IllegalAccessError 相关的问题(仅在 Android 8 设备上) 我更新了: Android Studio 到 3.3 Gradle 到 3.3.0 的
我目前正在对未记录的代码进行维护,并且在 Spring Boot 中运行类时偶然发现了一个奇怪的错误。代码在执行时会引发 IllegalAccessError,但可以正确编译。 似乎原始团队尝试访问
我正在为类(class)设置我的第一个程序,但我一直困惑为什么我的程序无法运行并尝试调试。我需要做什么来调试这个错误? 我尝试添加库,但这似乎不起作用。 import javafx.event.Act
我正在翻译 this code到 Clojure。如您所见,我必须扩展 ArthurFrame 类,但每次使用 (proxy [ArthurFrame] [] ... )。 知道为什么吗?这是 cla
我有以下情况: 同一工作区中的 2 个 Eclipse 项目:Apa 和 Bepa(为简洁起见,使用化名)。 Apa 项目引用(包括)Bepa 项目。 我在 Bepa 有一个类 X,具有公共(publ
Oracle JavaDocs 解释说 IllegalAccessError 是 "Thrown if an application attempts to access or modify a fi
我目前正在编写一个自动更新程序,它可以从 GitHub 下载最新版本的插件。我禁用了该插件,我可以替换它,现在我想启用它,但出现以下错误 java.lang.IllegalAccessError: t
我有一个简单的函数,用于从所选目录加载类“Myclass”。 // Variables File temp = new File("some path..."); String
在下面的代码中,我给出了两个主要类 - TestWorks 和 TestCompilesButFails。我不确定我是否理解失败 - 似乎 Arrays.asList() 表达式被赋予类型“Abstr
我创建了一个自定义 ParquetOutputFormat(org.apache.parquet.hadoop 中的类)来覆盖 getRecordWriter 方法。在 getRecordWriter
我正在开发一个旨在使用 Renderscript 支持库的应用程序。使用 Android Studio 0.5.4 和 Gradle 1.11 进行开发。 配置我使用的渲染脚本 android {
我的应用程序在 5+ 和 6+ 上完美运行,但在 7 上却不行。当应用程序尝试登录服务器时抛出此异常: 09-01 09:52:53.821 2654-2718/com.pipodi.italians
我昨天买了一台新电脑 (Dell XPS 13)。我刚刚安装了 JDK 并将我所有的旧 Java 项目复制到我的新设备上,但是当我尝试运行这些程序中的任何一个时,我遇到了非法访问错误。 编辑:注意:在
我正在用 jackson 开发软件,但完全卡住了......当我用 java -jar .jar 运行 spring-boot 程序时命令,我收到以下错误: ... Caused by: org.sp
IllegalAccessError 类有两个构造函数,IllegalAccessError() 和 IllegalAccessError(String s)。 为什么 IllegalAccessEr
我找到了 this JDK bug并想了解它发生的原因。 场景(取自 the bug report)非常简单:一个 class 声明一个 private 方法,一个 interface 声明一个 pu
该应用程序包含一个短暂显示的初始屏幕,该 Activity 正在使用 IdlingResource 进行插桩测试,以便测试知道初始屏幕何时关闭。问题是 SplashActivity 在运行 API 1
我是一名具有编写 PHP、python 和 ruby 经验的新手工程师。我正在尝试为一个用 clojure 编写的项目做出贡献。我正在尝试向项目添加一个库,但在添加库并运行后 lein uberj
我是一名优秀的程序员,十分优秀!