java - 无法编译 Groovy 枚举

标签 java groovy enums

我是 Groovy 和 Java 的新手。我正在尝试编译一个枚举,以便可以在多个其他 Groovy 脚本中使用它。

这是枚举:

package branchformatter

enum ColorSequence
{
    COLUMNS,
    WHEEL
}

当我尝试使用 groovyc 编译它时,它似乎编译时没有错误,但是当我将其导入另一个脚本并尝试运行第二个脚本时,我收到以下错误:

the number of constructors during runtime and compile time for branchformatter.ColorSequence do not match. Expected -1 but got 2

我尝试使用 Groovy Console 编译枚举并得到以下异常:

java.lang.InstantiationException: branchformatter.ColorSequence

奇怪的是,如果我将枚举定义直接复制并粘贴到第二个脚本中,而不是尝试导入它,第二个脚本就可以正常工作。所以枚举似乎没有什么根本性的错误。

我正在运行 Groovy 2.2.1 和 Java 1.7.0_51。我正在尝试从 Freeplane 1.2.23(思维导图应用程序)中执行第二个脚本。

编辑:这是我在第二个脚本中使用它的方式:

import branchformatter.ColorSequence

def colorSequence = ColorSequence.WHEEL

if (colorSequence == ColorSequence.COLUMNS)
{
    ...
}

编辑2,回应chrylis询问反编译的枚举是什么样子的:还没有安装JDK,只有JRE,而且看起来JDK是一个巨大的安装,所以可能需要一段时间。相反,我下载了 JD-GUI,如本答案所述: https://stackoverflow.com/a/272595/216440 。这是反编译枚举类文件后的输出:

package branchformatter;

import groovy.lang.GroovyObject;
import groovy.lang.MetaClass;
import java.util.LinkedHashMap;
import org.codehaus.groovy.runtime.BytecodeInterface8;
import org.codehaus.groovy.runtime.ScriptBytecodeAdapter;
import org.codehaus.groovy.runtime.callsite.CallSite;
import org.codehaus.groovy.transform.ImmutableASTTransformation;

public enum ColorSequence
  implements GroovyObject
{
  public static final ColorSequence MIN_VALUE;
  public static final ColorSequence MAX_VALUE;

  public ColorSequence(LinkedHashMap __namedArgs)
  {
    MetaClass localMetaClass = $getStaticMetaClass();
    this.metaClass = localMetaClass;
    if ((!BytecodeInterface8.isOrigZ()) || (BytecodeInterface8.disabledStandardMetaClass()))
    {
      if (ScriptBytecodeAdapter.compareEqual(__namedArgs, null)) {
        throw ((Throwable)arrayOfCallSite[0].callConstructor(IllegalArgumentException.class, "One of the enum constants for enum branchformatter.ColorSequence was initialized with null. Please use a non-null value or define your own constructor."));
      } else {
        arrayOfCallSite[1].callStatic(ImmutableASTTransformation.class, this, __namedArgs);
      }
    }
    else if (ScriptBytecodeAdapter.compareEqual(__namedArgs, null)) {
      throw ((Throwable)arrayOfCallSite[2].callConstructor(IllegalArgumentException.class, "One of the enum constants for enum branchformatter.ColorSequence was initialized with null. Please use a non-null value or define your own constructor."));
    } else {
      arrayOfCallSite[3].callStatic(ImmutableASTTransformation.class, this, __namedArgs);
    }
  }

  public ColorSequence()
  {
    this((LinkedHashMap)ScriptBytecodeAdapter.castToType(arrayOfCallSite[4].callConstructor(LinkedHashMap.class), LinkedHashMap.class));
  }

  static
  {
    __$swapInit();
    long l1 = 0L;
    __timeStamp__239_neverHappen1390713687979 = l1;
    long l2 = 1390713687979L;
    __timeStamp = l2;
    Object localObject1 = $getCallSiteArray()[18].callStatic(ColorSequence.class, "COLUMNS", Integer.valueOf(0));
    COLUMNS = (ColorSequence)ScriptBytecodeAdapter.castToType(localObject1, ColorSequence.class);
    Object localObject2 = $getCallSiteArray()[19].callStatic(ColorSequence.class, "WHEEL", Integer.valueOf(1));
    WHEEL = (ColorSequence)ScriptBytecodeAdapter.castToType(localObject2, ColorSequence.class);
    ColorSequence localColorSequence1 = COLUMNS;
    MIN_VALUE = localColorSequence1;
    ColorSequence localColorSequence2 = WHEEL;
    MAX_VALUE = localColorSequence2;
    ColorSequence[] arrayOfColorSequence = { COLUMNS, WHEEL };
    $VALUES = arrayOfColorSequence;
  }
}

编辑 3: javap -c -p ColorSequence 的输出。请注意,输出已被截断,因为它超出了帖子的最大长度:

Warning: Binary file ColorSequence contains branchformatter.ColorSequence
Compiled from "BranchFormatter.ColorSequence.groovy"
public final class branchformatter.ColorSequence extends java.lang.Enum<branchformatter.ColorSequence> implements groovy.lang.GroovyObject {
  public static final branchformatter.ColorSequence COLUMNS;

  public static final branchformatter.ColorSequence WHEEL;

  public static final branchformatter.ColorSequence MIN_VALUE;

  public static final branchformatter.ColorSequence MAX_VALUE;

  private static final branchformatter.ColorSequence[] $VALUES;

  private static org.codehaus.groovy.reflection.ClassInfo $staticClassInfo;

  public static transient boolean __$stMC;

  private transient groovy.lang.MetaClass metaClass;

  public static long __timeStamp;

  public static long __timeStamp__239_neverHappen1390713687979;

  private static java.lang.ref.SoftReference $callSiteArray;

  public branchformatter.ColorSequence(java.lang.String, int, java.util.LinkedHashMap);
    Code:
       0: invokestatic  #30                 // Method $getCallSiteArray:()[Lorg/codehaus/groovy/runtime/callsite/CallSite;
       3: astore        4
       5: aload_0
       6: aload_1
       7: iload_2
       8: invokespecial #33                 // Method java/lang/Enum."<init>":(Ljava/lang/String;I)V
      11: aload_0
      12: invokevirtual #37                 // Method $getStaticMetaClass:()Lgroovy/lang/MetaClass;
      15: astore        5
      17: aload         5
      19: aload_0
      20: swap
      21: putfield      #39                 // Field metaClass:Lgroovy/lang/MetaClass;
      24: aload         5
      26: pop
      27: invokestatic  #45                 // Method org/codehaus/groovy/runtime/BytecodeInterface8.isOrigZ:()Z
      30: ifeq          42
      33: invokestatic  #48                 // Method org/codehaus/groovy/runtime/BytecodeInterface8.disabledStandardMetaClass:()Z
      36: ifne          42
      39: goto          89
      42: aload_3
      43: aconst_null
      44: invokestatic  #54                 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.compareEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
      47: ifeq          71
      50: aload         4
      52: ldc           #55                 // int 0
      54: aaload
      55: ldc           #57                 // class java/lang/IllegalArgumentException
      57: ldc           #59                 // String One of the enum constants for enum branchformatter.ColorSequence was initialized with null. Please use a non-null value or define your own constructor.
      59: invokeinterface #65,  3           // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.callConstructor:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
      64: checkcast     #67                 // class java/lang/Throwable
      67: athrow
      68: goto          86
      71: aload         4
      73: ldc           #68                 // int 1
      75: aaload
      76: ldc           #70                 // class org/codehaus/groovy/transform/ImmutableASTTransformation
      78: aload_0
      79: aload_3
      80: invokeinterface #74,  4           // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.callStatic:(Ljava/lang/Class;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
      85: pop
      86: goto          133
      89: aload_3
      90: aconst_null
      91: invokestatic  #54                 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.compareEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
      94: ifeq          118
      97: aload         4
      99: ldc           #75                 // int 2
     101: aaload
     102: ldc           #57                 // class java/lang/IllegalArgumentException
     104: ldc           #59                 // String One of the enum constants for enum branchformatter.ColorSequence was initialized with null. Please use a non-null value or define your own constructor.
     106: invokeinterface #65,  3           // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.callConstructor:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     111: checkcast     #67                 // class java/lang/Throwable
     114: athrow
     115: goto          133
     118: aload         4
     120: ldc           #76                 // int 3
     122: aaload
     123: ldc           #70                 // class org/codehaus/groovy/transform/ImmutableASTTransformation
     125: aload_0
     126: aload_3
     127: invokeinterface #74,  4           // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.callStatic:(Ljava/lang/Class;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     132: pop
     133: return

  public branchformatter.ColorSequence(java.lang.String, int);
    Code:
       0: invokestatic  #30                 // Method $getCallSiteArray:()[Lorg/codehaus/groovy/runtime/callsite/CallSite;
       3: astore_3
       4: aload_0
       5: aload_1
       6: iload_2
       7: aload_3
       8: ldc           #84                 // int 4
      10: aaload
      11: ldc           #86                 // class java/util/LinkedHashMap
      13: invokeinterface #89,  2           // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.callConstructor:(Ljava/lang/Object;)Ljava/lang/Object;
      18: ldc           #86                 // class java/util/LinkedHashMap
      20: invokestatic  #93                 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.castToType:(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
      23: checkcast     #86                 // class java/util/LinkedHashMap
      26: invokespecial #95                 // Method "<init>":(Ljava/lang/String;ILjava/util/LinkedHashMap;)V
      29: return

  public static final branchformatter.ColorSequence[] values();
    Code:
       0: invokestatic  #30                 // Method $getCallSiteArray:()[Lorg/codehaus/groovy/runtime/callsite/CallSite;
       3: astore_0
       4: getstatic     #99                 // Field $VALUES:[Lbranchformatter/ColorSequence;
       7: invokevirtual #105                // Method java/lang/Object.clone:()Ljava/lang/Object;
      10: ldc           #106                // class "[Lbranchformatter/ColorSequence;"
      12: invokestatic  #93                 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.castToType:(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
      15: checkcast     #106                // class "[Lbranchformatter/ColorSequence;"
      18: areturn
      19: aconst_null
      20: areturn

  public branchformatter.ColorSequence next();
    Code:
       0: invokestatic  #30                 // Method $getCallSiteArray:()[Lorg/codehaus/groovy/runtime/callsite/CallSite;
       3: astore_1
       4: aload_1
       5: ldc           #109                // int 5
       7: aaload
       8: aload_1
       9: ldc           #110                // int 6
      11: aaload
      12: aload_0
      13: invokeinterface #114,  2          // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.callCurrent:(Lgroovy/lang/GroovyObject;)Ljava/lang/Object;
      18: invokeinterface #117,  2          // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;)Ljava/lang/Object;
      23: astore_2
      24: aload_2
      25: pop
      26: invokestatic  #45                 // Method org/codehaus/groovy/runtime/BytecodeInterface8.isOrigZ:()Z
      29: ifeq          47
      32: getstatic     #119                // Field __$stMC:Z
      35: ifne          47
      38: invokestatic  #48                 // Method org/codehaus/groovy/runtime/BytecodeInterface8.disabledStandardMetaClass:()Z
      41: ifne          47
      44: goto          78
      47: aload_2
      48: aload_1
      49: ldc           #120                // int 7
      51: aaload
      52: getstatic     #99                 // Field $VALUES:[Lbranchformatter/ColorSequence;
      55: invokeinterface #117,  2          // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;)Ljava/lang/Object;
      60: invokestatic  #123                // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.compareGreaterThanEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
      63: ifeq          75
      66: iconst_0
      67: istore_3
      68: iload_3
      69: invokestatic  #129                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      72: astore_2
      73: iload_3
      74: pop
      75: goto          109
      78: aload_2
      79: aload_1
      80: ldc           #130                // int 8
      82: aaload
      83: getstatic     #99                 // Field $VALUES:[Lbranchformatter/ColorSequence;
      86: invokeinterface #117,  2          // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;)Ljava/lang/Object;
      91: invokestatic  #123                // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.compareGreaterThanEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
      94: ifeq          109
      97: iconst_0
      98: istore        4
     100: iload         4
     102: invokestatic  #129                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     105: astore_2
     106: iload         4
     108: pop
     109: aload_1
     110: ldc           #131                // int 9
     112: aaload
     113: getstatic     #99                 // Field $VALUES:[Lbranchformatter/ColorSequence;
     116: aload_2
     117: invokeinterface #133,  3          // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     122: ldc           #2                  // class branchformatter/ColorSequence
     124: invokestatic  #93                 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.castToType:(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
     127: checkcast     #2                  // class branchformatter/ColorSequence
     130: areturn
     131: aconst_null
     132: areturn

  public branchformatter.ColorSequence previous();
    Code:
       0: invokestatic  #30                 // Method $getCallSiteArray:()[Lorg/codehaus/groovy/runtime/callsite/CallSite;
       3: astore_1
       4: aload_1
       5: ldc           #137                // int 10
       7: aaload
       8: aload_1
       9: ldc           #138                // int 11
      11: aaload
      12: aload_0
      13: invokeinterface #114,  2          // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.callCurrent:(Lgroovy/lang/GroovyObject;)Ljava/lang/Object;
      18: invokeinterface #117,  2          // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;)Ljava/lang/Object;
      23: astore_2
      24: aload_2
      25: pop
      26: invokestatic  #45                 // Method org/codehaus/groovy/runtime/BytecodeInterface8.isOrigZ:()Z
      29: ifeq          47
      32: getstatic     #119                // Field __$stMC:Z
      35: ifne          47
      38: invokestatic  #48                 // Method org/codehaus/groovy/runtime/BytecodeInterface8.disabledStandardMetaClass:()Z
      41: ifne          47
      44: goto          91
      47: aload_2
      48: iconst_0
      49: invokestatic  #129                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      52: invokestatic  #141                // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.compareLessThan:(Ljava/lang/Object;Ljava/lang/Object;)Z
      55: ifeq          88
      58: aload_1
      59: ldc           #142                // int 12
      61: aaload
      62: aload_1
      63: ldc           #143                // int 13
      65: aaload
      66: getstatic     #99                 // Field $VALUES:[Lbranchformatter/ColorSequence;
      69: invokeinterface #117,  2          // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;)Ljava/lang/Object;
      74: iconst_1
      75: invokestatic  #129                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      78: invokeinterface #133,  3          // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
      83: astore_3
      84: aload_3
      85: astore_2
      86: aload_3
      87: pop
      88: goto          135
      91: aload_2
      92: iconst_0
      93: invokestatic  #129                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      96: invokestatic  #141                // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.compareLessThan:(Ljava/lang/Object;Ljava/lang/Object;)Z
      99: ifeq          135
     102: aload_1
     103: ldc           #144                // int 14
     105: aaload
     106: aload_1
     107: ldc           #145                // int 15
     109: aaload
     110: getstatic     #99                 // Field $VALUES:[Lbranchformatter/ColorSequence;
     113: invokeinterface #117,  2          // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;)Ljava/lang/Object;
     118: iconst_1
     119: invokestatic  #129                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     122: invokeinterface #133,  3          // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     127: astore        4
     129: aload         4
     131: astore_2
     132: aload         4
     134: pop
     135: aload_1
     136: ldc           #146                // int 16
     138: aaload
     139: getstatic     #99                 // Field $VALUES:[Lbranchformatter/ColorSequence;
     142: aload_2
     143: invokeinterface #133,  3          // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     148: ldc           #2                  // class branchformatter/ColorSequence
     150: invokestatic  #93                 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.castToType:(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
     153: checkcast     #2                  // class branchformatter/ColorSequence
     156: areturn
     157: aconst_null
     158: areturn

  public static branchformatter.ColorSequence valueOf(java.lang.String);
    Code:
       0: invokestatic  #30                 // Method $getCallSiteArray:()[Lorg/codehaus/groovy/runtime/callsite/CallSite;
       3: astore_1
       4: aload_1
       5: ldc           #148                // int 17
       7: aaload
       8: ldc           #2                  // class branchformatter/ColorSequence
      10: ldc           #2                  // class branchformatter/ColorSequence
      12: aload_0
      13: invokeinterface #74,  4           // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.callStatic:(Ljava/lang/Class;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
      18: ldc           #2                  // class branchformatter/ColorSequence
      20: invokestatic  #93                 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.castToType:(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
      23: checkcast     #2                  // class branchformatter/ColorSequence
      26: areturn
      27: aconst_null
      28: areturn

  public static final branchformatter.ColorSequence $INIT(java.lang.Object...);
    Code:
       0: invokestatic  #30                 // Method $getCallSiteArray:()[Lorg/codehaus/groovy/runtime/callsite/CallSite;
       3: astore_1
       4: iconst_0
       5: anewarray     #101                // class java/lang/Object
       8: iconst_1
       9: anewarray     #101                // class java/lang/Object
      12: dup
      13: iconst_0
      14: aload_0
      15: aastore
      16: iconst_1
      17: newarray       int
      19: dup
      20: iconst_0
      21: iconst_0
      22: iastore
      23: invokestatic  #155                // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.despreadList:([Ljava/lang/Object;[Ljava/lang/Object;[I)[Ljava/lang/Object;
      26: dup
      27: bipush        -1
      29: ldc           #2                  // class branchformatter/ColorSequence
      31: invokestatic  #159                // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.selectConstructorAndTransformArguments:([Ljava/lang/Object;ILjava/lang/Class;)I
      34: new           #2                  // class branchformatter/ColorSequence
      37: swap
      38: lookupswitch  { // 2
           -1348271900: 64
            -242181752: 93
               default: 134
          }
      64: dup_x1
      65: dup2_x1
      66: pop
      67: dup
      68: iconst_0
      69: aaload
      70: ldc           #161                // class java/lang/String
      72: invokestatic  #93                 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.castToType:(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
      75: checkcast     #161                // class java/lang/String
      78: swap
      79: dup
      80: iconst_1
      81: aaload
      82: invokestatic  #167                // Method org/codehaus/groovy/runtime/typehandling/DefaultTypeTransformation.intUnbox:(Ljava/lang/Object;)I
      85: swap
      86: pop
      87: invokespecial #168                // Method "<init>":(Ljava/lang/String;I)V
      90: goto          144
      93: dup_x1
      94: dup2_x1
      95: pop
      96: dup
      97: iconst_0
      98: aaload
      99: ldc           #161                // class java/lang/String
     101: invokestatic  #93                 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.castToType:(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
     104: checkcast     #161                // class java/lang/String
     107: swap
     108: dup
     109: iconst_1
     110: aaload
     111: invokestatic  #167                // Method org/codehaus/groovy/runtime/typehandling/DefaultTypeTransformation.intUnbox:(Ljava/lang/Object;)I
     114: swap
     115: dup
     116: iconst_2
     117: aaload
     118: ldc           #86                 // class java/util/LinkedHashMap
     120: invokestatic  #93                 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.castToType:(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
     123: checkcast     #86                 // class java/util/LinkedHashMap
     126: swap
     127: pop
     128: invokespecial #95                 // Method "<init>":(Ljava/lang/String;ILjava/util/LinkedHashMap;)V
     131: goto          144
     134: new           #57                 // class java/lang/IllegalArgumentException
     137: dup
     138: ldc           #170                // String This class has been compiled with a super class which is binary incompatible with the current super class found on classpath. You should recompile this class with the new version.
     140: invokespecial #173                // Method java/lang/IllegalArgumentException."<init>":(Ljava/lang/String;)V
     143: athrow
     144: swap
     145: pop
     146: areturn
     147: aconst_null
     148: areturn

  static {};
    Code:
       0: invokestatic  #180                // Method __$swapInit:()V
       3: lconst_0
       4: lstore_0
       5: lload_0
       6: putstatic     #182                // Field __timeStamp__239_neverHappen1390713687979:J
       9: lload_0
      10: pop2
      11: ldc2_w        #183                // long 1390713687979l
      14: lstore_2
      15: lload_2
      16: putstatic     #186                // Field __timeStamp:J
      19: lload_2
      20: pop2
      21: invokestatic  #30                 // Method $getCallSiteArray:()[Lorg/codehaus/groovy/runtime/callsite/CallSite;
      24: ldc           #187                // int 18
      26: aaload
      27: ldc           #2                  // class branchformatter/ColorSequence
      29: ldc           #188                // String COLUMNS
      31: iconst_0
      32: invokestatic  #129                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      35: invokeinterface #74,  4           // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.callStatic:(Ljava/lang/Class;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
      40: astore        4
      42: aload         4
      44: ldc           #2                  // class branchformatter/ColorSequence
      46: invokestatic  #93                 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.castToType:(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
      49: checkcast     #2                  // class branchformatter/ColorSequence
      52: putstatic     #190                // Field COLUMNS:Lbranchformatter/ColorSequence;
      55: aload         4
      57: pop
      58: invokestatic  #30                 // Method $getCallSiteArray:()[Lorg/codehaus/groovy/runtime/callsite/CallSite;
      61: ldc           #191                // int 19
      63: aaload
      64: ldc           #2                  // class branchformatter/ColorSequence
      66: ldc           #192                // String WHEEL
      68: iconst_1
      69: invokestatic  #129                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      72: invokeinterface #74,  4           // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.callStatic:(Ljava/lang/Class;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
      77: astore        5
      79: aload         5
      81: ldc           #2                  // class branchformatter/ColorSequence
      83: invokestatic  #93                 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.castToType:(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
      86: checkcast     #2                  // class branchformatter/ColorSequence
      89: putstatic     #194                // Field WHEEL:Lbranchformatter/ColorSequence;
      92: aload         5
      94: pop
      95: getstatic     #190                // Field COLUMNS:Lbranchformatter/ColorSequence;
      98: astore        6
     100: aload         6
     102: putstatic     #196                // Field MIN_VALUE:Lbranchformatter/ColorSequence;
     105: aload         6
     107: pop
     108: getstatic     #194                // Field WHEEL:Lbranchformatter/ColorSequence;
     111: astore        7
     113: aload         7
     115: putstatic     #198                // Field MAX_VALUE:Lbranchformatter/ColorSequence;
     118: aload         7
     120: pop
     121: iconst_2
     122: anewarray     #2                  // class branchformatter/ColorSequence
     125: dup
     126: iconst_0
     127: getstatic     #190                // Field COLUMNS:Lbranchformatter/ColorSequence;
     130: aastore
     131: dup
     132: iconst_1
     133: getstatic     #194                // Field WHEEL:Lbranchformatter/ColorSequence;
     136: aastore
     137: astore        8
     139: aload         8
     141: putstatic     #99                 // Field $VALUES:[Lbranchformatter/ColorSequence;
     144: aload         8
     146: pop
     147: return

  protected groovy.lang.MetaClass $getStaticMetaClass();
    Code:
       0: aload_0
       1: invokevirtual #202                // Method java/lang/Object.getClass:()Ljava/lang/Class;
       4: ldc           #2                  // class branchformatter/ColorSequence
       6: if_acmpeq     14
       9: aload_0
      10: invokestatic  #206                // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.initMetaClass:(Ljava/lang/Object;)Lgroovy/lang/MetaClass;
      13: areturn
      14: getstatic     #208                // Field $staticClassInfo:Lorg/codehaus/groovy/reflection/ClassInfo;
      17: astore_1
      18: aload_1
      19: ifnonnull     34
      22: aload_0
      23: invokevirtual #202                // Method java/lang/Object.getClass:()Ljava/lang/Class;
      26: invokestatic  #214                // Method org/codehaus/groovy/reflection/ClassInfo.getClassInfo:(Ljava/lang/Class;)Lorg/codehaus/groovy/reflection/ClassInfo;
      29: dup
      30: astore_1
      31: putstatic     #208                // Field $staticClassInfo:Lorg/codehaus/groovy/reflection/ClassInfo;
      34: aload_1
      35: invokevirtual #217                // Method org/codehaus/groovy/reflection/ClassInfo.getMetaClass:()Lgroovy/lang/MetaClass;
      38: areturn

  public groovy.lang.MetaClass getMetaClass();
    Code:
       0: aload_0
       1: getfield      #39                 // Field metaClass:Lgroovy/lang/MetaClass;
       4: dup
       5: ifnull        9
       8: areturn
       9: pop
      10: aload_0
      11: dup
      12: invokevirtual #37                 // Method $getStaticMetaClass:()Lgroovy/lang/MetaClass;
      15: putfield      #39                 // Field metaClass:Lgroovy/lang/MetaClass;
      18: aload_0
      19: getfield      #39                 // Field metaClass:Lgroovy/lang/MetaClass;
      22: areturn

  public void setMetaClass(groovy.lang.MetaClass);
    Code:
       0: aload_0
       1: aload_1
       2: putfield      #39                 // Field metaClass:Lgroovy/lang/MetaClass;
       5: return

[[REMAINDER TRUNCATED]]

最佳答案

在我看来,这是由 Groovy 和/或 Java 版本的差异引起的。我认为这个问题可能是由于您使用 groovyc 2.2.1 手动编译它,并且 Freeplane 试图使用它自己的内部 groovy 库运行它,该库可能位于不同的版本上。

http://freeplane.sourceforge.net/wiki/index.php/Scripting:_Update_Freeplane%27s_Groovy_version

这表示 Freeplane 附带了 groovy 1.8.0。我会尝试更新 Freeplane 以使用 groovy 2.2.1,或者自己回退到 1.8.0,看看是否可以解决问题。

有两件事作为一般说明: 第一:任何时候您看到“构造函数数量错误”或“不兼容的类更改”错误,通常表明存在 java 和/或 groovy 版本问题。根据我的经验,十分之九这就是问题所在。

如果您有过 java/groovy 的经验,那么第二件事是非常基本的,但无论如何我都会提到它,因为您说您对两者都是新手。如果您正在运行 Groovy 脚本,则无需预编译它。 Groovy shell 会在评估脚本时为您执行此操作。然后您将始终确保它是使用运行它的同一版本的 groovy 进行编译的。

关于java - 无法编译 Groovy 枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21360106/

相关文章:

types - 在 Rust 的枚举中使用现有类型

java - 高效地将 BufferedImage 转换为 IplImage

java - a.neo4j.mapping.Neo4jPersistentProperty : 73 - Owning ClassInfo is null for field

Java 泛型 : Adding elements to Set<? > 、 Set<?扩展 Integer> 和 Set<? super 整数>

sorting - 如何按自定义顺序对列表排序?

groovy - groovy 中 "use"关键字/方法有什么用?

angular - 是否可以更改现有 Grails 应用程序的配置文件?

haskell - Haskell 中的安全和多态枚举

ios - 对 xxx 的引用不明确

java - 最大化 JInternalFrame Windows 外观和感觉最大化所有 JInternalFrame