java - 使用 maven 与 ant : Differences 编译相同的枚举

标签 java maven ant enums

我用 Maven 和 Ant (Java 7) 编译了相同的枚举。类文件不同。常量池中某些元素的顺序似乎不同,而且生成的方法具有不同的字节码。 Maven 的“values()”方法看起来像这样:

public static de.continentale.vs.common.model.enums.PartnerRolle[] values();
    Code:
       0: getstatic     #1                  // Field $VALUES:[Lde/continentale/vs/common/model/enums/PartnerRolle;
       3: invokevirtual #2                  // Method "[Lde/continentale/vs/common/model/enums/PartnerRolle;".clone:()Ljava/lang/Object;
       6: checkcast     #3                  // class "[Lde/continentale/vs/common/model/enums/PartnerRolle;"
       9: areturn     

另一个版本(Ant)是这样的:

 public static de.continentale.vs.common.model.enums.PartnerRolle[] values();
    Code:
       0: getstatic     #115                // Field ENUM$VALUES:[Lde/continentale/vs/common/model/enums/PartnerRolle;
       3: dup           
       4: astore_0      
       5: iconst_0      
       6: aload_0       
       7: arraylength   
       8: dup           
       9: istore_1      
      10: anewarray     #1                  // class de/continentale/vs/common/model/enums/PartnerRolle
      13: dup           
      14: astore_2      
      15: iconst_0      
      16: iload_1       
      17: invokestatic  #147                // Method java/lang/System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
      20: aload_2       
      21: areturn

这似乎发生在我编译的所有枚举上。知道发生了什么吗?

最佳答案

虽然 Ant 正确使用了 jdk 1.7.0_67,但结果受到 Eclipse 编译器在后台创建类文件的影响。所以一些“Ant 类文件”实际上是 Ant 没有再次构建的 Eclipse 类文件。 Eclipse 编译器生成的字节码略有不同。

关于java - 使用 maven 与 ant : Differences 编译相同的枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41060211/

相关文章:

java - Ant:如何在多个项目上执行任务

java - 如何在加工中产生正弦波?

Java:我无法将一个 BigInteger 添加到另一个

java - 如果使用第谷从子项目构建,则找不到目标平台

java - 如何从 Maven 项目引用非 Maven 项目(在 Eclipse 工作区中)?

maven - 关于创建 Maven 项目结构的建议 - 多个模块与多个项目?

java | Apache 共享 CSV |如何使用 utf-8-bom 编写 csv 文件?

java - 如何将长绳子分成较小的部分?

javac 无法在 .jar 中找到类,即使它们存在?

自动启动我的服务器和应用程序的 Ant 任务