我是Groovy和Java的新手。我正在尝试编译枚举,因此我可以在多个其他Groovy脚本中使用它。
这是枚举:
package branchformatter
enum ColorSequence
{
COLUMNS,
WHEEL
}
当我尝试使用groovyc编译它时似乎编译没有错误但是当我将其导入另一个脚本并尝试运行第二个脚本时,我收到以下错误:
运行时和编译时的构造函数数量 branchformatter.ColorSequence不匹配。预期-1但得到2
我尝试使用Groovy Console编译枚举,并得到以下异常:
java.lang.InstantiationException:branchformatter.ColorSequence
奇怪的是,如果我将枚举定义直接复制并粘贴到第二个脚本中,而不是尝试导入它,第二个脚本可以正常工作。所以enum似乎没有任何根本性的错误。
我正在运行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]]
答案 0 :(得分:2)
这让我觉得它是由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版本问题。根据我的经验,这将是问题的10倍。
如果你有java / groovy的经验,那么第二件事是非常基本的,但是无论如何我会提到它,因为你说你对两者都是新手。如果您正在运行Groovy脚本,则无需预编译它。 Groovy shell在评估脚本时会为您执行此操作。然后你总是确定它是用运行它的相同版本的groovy编译的。