java - java 类文件中的体系结构意味着什么?

标签 java tomcat

我刚刚构建了Tomcat7,并使用file命令检查生成的类文件,打印如下

output/classes/org/apache/coyote/AbstractProcessor$1.class:   compiled Java class data, version 52.0 [64-bit architecture=65593] [architecture=6382440]
output/classes/org/apache/coyote/AbstractProcessor.class:     compiled Java class data, version 52.0 [architecture=14878464] [architecture=56073]

架构在输出中意味着什么?为什么编译器对同一文件中的类生成不同的结果?

为什么编译器会为 https://github.com/apache/tomcat/blob/7.0.x/java/org/apache/coyote/AbstractProcessor.java 生成 AbstractProcessor$1.class ?源代码中没有匿名内部类。

最佳答案

看起来这实际上是 file 命令中的一个错误。正在查看the file cafebabefile github镜像中,它处理检测Java类文件和Mach-O(即Mac)二进制文件(因为它们都使用相同的魔术字符串),似乎“架构”部分意味着仅用于后者,但以某种方式应用于您的类文件。

请随意忽略这一点。

关于$1文件,用javap查看它表明它是一个合成类,并且包含一个名为$SwitchMap$org$apache$tomcat$util$log$UserDataHelper$Mode的方法(原文如此) ),表明它是编译器生成的,用于帮助代码中的 switch 语句:

$ javap AbstractProcessor\$1.class 
Compiled from "AbstractProcessor.java"
class org.apache.coyote.AbstractProcessor$1 {
  static final int[] $SwitchMap$org$apache$tomcat$util$log$UserDataHelper$Mode;
  static {};
}

关于java - java 类文件中的体系结构意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59855207/

相关文章:

java - 制作命令行,如果语句不起作用

apache - 简单后处理工具 : FATAL: Connection error (is Solr running at http://localhost:8983/solr/update ? )

json - 是否有任何特殊配置使 "application/json"mime 类型被接受 Tomcat 6.0 (Spring MVC 3.0)?

java - 从代码中提取字符串值

java - 整数数组和关键字final。 [Java]

java - boolean 值、条件运算符和自动装箱

java - 在 Linux 的 Windows 子系统上安装 Oracle JDK

tomcat - 当我的 servlet 尝试从 Tomcat 使用 SSH 时访问被拒绝

java - JPA 是否要求数据源来自 JNDI?

java - spring boot war 找不到index.html