2014-01-26 3 views
2

Groovy 및 Java를 처음 사용했습니다. 나는 여러 다른 Groovy 스크립트에서 열거 형을 사용할 수 있도록 열거 형을 컴파일하려고합니다. 여기 Groovy Enum을 컴파일 할 수 없습니다.

는 열거입니다 :

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

나는 그루비 콘솔을 사용하여 열거를 컴파일 시도하고 다음과 같은 예외 가지고 :

java.lang.InstantiationException: branchformatter.ColorSequence

이상한 일은 열거 형 정의를 두 번째 스크립트에 직접 복사하여 붙여 넣으면 가져 오기 대신 두 번째 스크립트가 제대로 작동한다는 것입니다. 그래서 열거 형에 근본적으로 잘못된 것은 없다.

저는 Groovy 2.2.1 및 Java 1.7.0_51을 실행하고 있습니다. Freeplane 1.2.23 (mind mapping application)에서 두 번째 스크립트를 실행하려고합니다.

편집 : 이것은 내가 두 번째 스크립트에서 사용하고 방법은 다음과 같습니다은하지 않은 다음 디 컴파일 열거 형의 모습을보고 물어 chrylis에 대한 응답으로,

import branchformatter.ColorSequence 

def colorSequence = ColorSequence.WHEEL 

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

편집 2 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의 출력은 열거 클래스 파일을 디 컴파일 후 여기에 출력이다. 이 게시물에 대한 최대 길이를 초과로 출력이 잘 렸습니다 참고 :이 그루비 및/또는 Java 버전의 차이로 인해 발생과 같은

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]] 
+1

'javap -c -p ColorSequence'의 출력을 게시 할 수 있습니까? – chrylis

+1

이 디 컴파일이 정확하다면 (그리고 디스 어셈블리가 여전히 도움이 될 것입니다.) 'groovyc'에서 enum을 다루는 주요 버그처럼 보입니다. 자바 열거 형은 특별히 public 생성자가 필요하지 않습니다 (특별히 정의 된 인스턴스가 몇 개 있습니다). 내가 시도 할 다음 단계는 자바에서 열거 형을 컴파일하고 (Groovy에서 아무런 문제가 없으므로) Groovy에서 사용하는 것입니다. – chrylis

+0

@chrylis : 고마워. JDK와 Eclipse를 다운로드하고이를 사용하려고 시도하고 있습니다. 열거 형 클래스 파일에서 javap을 시도하겠습니다. 그러나 Java가 Groovy 열거 형을 컴파일하는 아이디어는 솔루션 일 수 있습니다. 작업 후 (한번 Eclipse를 사용하는 방법을 알았다면) 그것을 시험해보아야 할 것이다. –

답변

2

이 나에게 보인다. 이 문제는 groovyc 2.2.1을 사용하여 수동으로 컴파일한다는 사실에 기인한다고 생각합니다. Freeplane은 다른 버전에있을 수있는 자체 Groovy 라이브러리와 함께 실행하려고합니다.

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

은 Freeplane는 그루비 1.8.0와 함께 제공했다. Groovy 2.2.1을 사용하기 위해 Freeplane을 업데이트하려고합니다. 그렇지 않으면 1.8.0으로 직접 넘어가서 해결해줍니다.

일반적인 메모와 같은 두 가지 : 첫 번째 : '잘못된 생성자 수'또는 '호환되지 않는 클래스 변경'오류가 표시되면 일반적으로 자바 및/또는 그루비 버전 문제가 있음을 나타냅니다. 내 경험으로는 10 점 만점에 9 점이 문제가 될 것입니다.

자바/그루비에 대한 경험이 있다면 두 번째 것은 꽤 기본이지만 두 가지를 처음 접했을 때 언급 할 것입니다. Groovy 스크립트를 실행 중이면 사전 컴파일 할 필요가 없습니다. Groovy 쉘은 스크립트를 평가할 때이를 수행합니다. 그렇다면 항상 동일한 버전의 Groovy로 컴파일되었는지 확인해야합니다.

+0

완벽하게 일했습니다. 감사합니다. 한 가지 질문 : 실행할 스크립트를 미리 컴파일 할 필요가 없다고 말하면 다른 스크립트로 가져온 스크립트가 포함됩니까? 나는 주변에서 놀았고 컴파일 된 열거 형의 클래스 파일을 열거 형을 정의하는 원본 Groovy 스크립트로 바꾸면 가져 오는 스크립트가 정상적으로 실행됩니다. 그러나 그것을 정의하는 스크립트와 그것을 가져 오는 스크립트에서 열거 형의 이름을 바꾸면 "클래스 _ 이름 _을 (를) 확인할 수 없습니다"라는 오류와 함께 실패합니다. 따라서 다른 스크립트로 가져온 스크립트를 컴파일해야하는지 잘 모르겠습니다. –

+1

일회성 스크립트로 실행하려는 경우 가장 적합한 옵션은 필요한 모든 클래스를 하나의 스크립트에 정적 내부 클래스로 포함하는 것입니다. 스크립트가 다른 라이브러리 또는 미리 컴파일 된 코드에 의존하게하려면 런타임에 클래스 경로에 해당 jar 파일을 추가해야합니다 (타사 프로그램에 일반적인 종속성을 쉽게 추가 할 수 없으므로)). 'this.class.classLoader.addURL ()' 문제는 Class.forName (String)을 호출하여 클래스를로드해야하므로 고통이됩니다. 내부 클래스가 좋습니다. – allTwentyQuestions

+0

설명해 주셔서 감사합니다. 필자는 Python을 사용하여 클래스 나 함수를 컴파일 할 필요없이 다른 파일로 분할하는 것이 쉽다는 것을 알고 있습니다. Groovy가 소규모 프로젝트에 적합하다는 인상을 받고 있습니다 만, 복잡성면에서 보면 스크립트 언어와 Java 프로젝트 사이의 중간 정도입니다. –

관련 문제