2010-11-10 37 views
0

運行數據增強器後,我得到了一個奇怪的行爲。然後試圖生成EntityManagerFactory的,我在java.lang.VerifyError的,這是跑運行DataNucleus增強器後的java.lang.VerifyError

method: setItem signature: (Ljava/lang/Object;)V) Incompatible argument to function" type="java.lang.VerifyError">java.lang.VerifyError: (class: de/suur/wr/generated/FlagType$FlagTypeRemoveFlagsItem, method: setItem signature: (Ljava/lang/Object;)V) Incompatible argument to function 

方法的原始聲明:

public void setItem(String value) { 
     this.item = value; 
    } 

我想通了,java的增加了一些合成字節碼的橋接方法,這將確實匹配錯誤(見下文)。但通常這種方法可以和平共處。也許這個錯誤與增強器根本沒有關係,但是我沒有其他直覺,我認爲它是相關的。 可能是什麼原因?

// Method descriptor #53 (Ljava/lang/Object;)V 
    // Stack: 2, Locals: 2 
    public bridge synthetic void setItem(java.lang.Object arg0); 
    0 aload_0 [this] 
    1 aload_1 [arg0] 
    2 checkcast java.lang.String [54] 
    5 invokevirtual de.suur.wr.generated.FlagType$FlagTypeRemoveFlagsItem.setItem(java.lang.String) : void [56] 
    8 return 
    Line numbers: 
    [pc: 0, line: 1] 

和原始方法:

// Method descriptor #36 (Ljava/lang/String;)V 
// Stack: 2, Locals: 2 
public void setItem(java.lang.String value); 
    0 aload_0 [this] 
    1 aload_1 [value] 
    2 putfield de.suur.wr.generated.FlagType$FlagTypeRemoveFlagsItem.item : java.lang.String [33] 
    5 return 
    Line numbers: 
    [pc: 0, line: 314] 
    [pc: 5, line: 315] 
    Local variable table: 
    [pc: 0, pc: 6] local: this index: 0 type: de.suur.wr.generated.FlagType.FlagTypeRemoveFlagsItem 
    [pc: 0, pc: 6] local: value index: 1 type: java.lang.String 

我使用的DataNucleus將(DN)和卑屈組合DataNucleus將行家插件(DNM2):(DN,DNM2)1.1.4,2.0 .0和2.1.1,2.1.1。堆棧跟蹤是

at java.lang.Class.getDeclaredMethods0(Native Method) 
at java.lang.Class.privateGetDeclaredMethods(Class.java:2427) 
at java.lang.Class.getDeclaredMethods(Class.java:1791) 
at org.datanucleus.metadata.annotations.AbstractAnnotationReader.getJavaBeanAccessorAnnotationsForClass(AbstractAnnotationReader.java:238) 

回答

0
使用DN V1.1,那麼你應該使用DN M2 V1.1插件(使用增強V1.1)

顯然,如果。不用說,我們只支持當前版本,並且這兩個版本都不屬於那個類別

+0

好吧,我也這麼認爲,然後我嘗試了不同的版本,效果相同,所以最後我重試了DNv.1.1.4, DN M2v1.1.4。 ,並且與2.1.1(DN M2和DN)相同。 – joecks 2010-11-10 22:20:33