Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用maven和ant编译相同的枚举:差异_Java_Maven_Ant_Enums - Fatal编程技术网

Java 使用maven和ant编译相同的枚举:差异

Java 使用maven和ant编译相同的枚举:差异,java,maven,ant,enums,Java,Maven,Ant,Enums,我用Maven和Ant(Java7)编译了相同的枚举。类文件不同。常量池中某些元素的顺序似乎不同,而且生成的方法具有不同的字节码。Maven的“values()”方法如下所示: public static de.continentale.vs.common.model.enums.PartnerRolle[] values(); Code: 0: getstatic #1 // Field $VALUES:[Lde/continen

我用Maven和Ant(Java7)编译了相同的枚举。类文件不同。常量池中某些元素的顺序似乎不同,而且生成的方法具有不同的字节码。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)是:


我编译的所有枚举似乎都会发生这种情况。知道发生了什么吗

尽管Ant正确地使用了JDK1.7.067,但结果受到Eclipse编译器的影响,后者在后台创建类文件。所以有些“Ant类文件”实际上是Eclipse类文件,Ant没有再次构建它们。Eclipse编译器生成的字节码略有不同。

您是否指定了不同的目标JVM版本?您是否使用了不同的编译器/JDK进行编译?它们是否都使用了完全相同的Java版本进行编译?我对这两种编译都使用了JDK1.7.067。目标版本是Java 1.7。您能否分享受Eclipse编译器影响的详细信息。。怎样?还有一个问题是,我从来没有读过编译器的任何细节,如何将其链接到问题的解决方案?对不起,我在12月9日的评论中添加了编译器版本。在激活“buildautomatically”时从Eclipse启动Ant目标会导致某些类使用Eclipse编译器编译的情况。在从命令行开始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