java - `java.lang.ClassFormatError` 错误代码列表

标签 java

最近我遇到了这个错误

Caught: java.lang.ClassFormatError: Illegal field modifier in class **** : 0x3
java.lang.ClassFormatError : Illegal field modifiers in class **** : 0x3

我知道原因,我一直想知道 - 是否有这些错误代码及其解释的表格?因为我很好奇0x3是什么意思。

最佳答案

字段修饰符是有效修饰符的按位或。每个有效的修饰符(其中一些显示在 @gustf 的答案中)都是具有单个位设置的整数。

因此,0x3 将是两个具有数值 0x20x1 的修饰符的 OR。

0x2 修饰符表示 ACC_PRIVATE0x1 修饰符表示 ACC_PUBLIC

这是一个矛盾 - 你不能同时拥有公共(public)和私有(private)的东西 - 因此 0x3 是无效的修饰符组合。

Section 4.5 of the JVM spec 中描述了此行为:

Fields of classes may set any of the flags in Table 4.4. However, a specific field of a class may have at most one of its ACC_PRIVATE, ACC_PROTECTED, and ACC_PUBLIC flags set ...

因此,规范明确禁止设置 ACC_PRIVATEACC_PUBLIC

关于java - `java.lang.ClassFormatError` 错误代码列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36270028/

相关文章:

java - 如何以正确的方式创建对象数组?

java - 我应该使用哪些 Android API?简单的 map 应用

java - 将邮件列表应用程序与社交站点集成

java - 如何通过java反射获取kotlin extensions中声明的Properties或Function

java - 短信监听器使某些应用程序强制关闭

Java servlet 发送选择值

java - 扫描条形码时出错 Mobile Vision API?

java - 中继 servlet(servlet 调用另一个 servlet)

java - Gradle 使用 2 个不同的 JDK

java - 空 View 不显示任何内容