Bazı dinamik kodlar (Javassist kullanarak) oluşturmaya çalışıyorum, ancak çift dizi veya kayan dizi dahilinde belirli bir noktada program başarısız oluyor.Doğrulama Hatası: opc_invokeinterface için tutarsız args_size
testapp1.Customers temp=(testapp1.Customers)graph;
output.processDouble(temp.Dubs[1]);
aşağıdaki Ama sorun getDeclaredConstructors c.getDeclaredConstructors() çağrıldığında doğar olarak
Class c = Customers.class; // called in main & Customer class just has a double[] Dubs = new double[10]
CreateType(c); // Main
public static Object CreateType(Class genericType)
{
// some preReq declarations
CtMethod writeCode = dyn.getDeclaredMethod("processCode");
generateCode(genericType, Code, "temp"); // Code is a StringBuilder class
System.out.println(Code);
writeCode.insertAt(1, Code.toString()); // Compilation is successful
Class c = dyn.toClass();
Dynamic h;
Constructor[] ctorlist = null;
ctorlist = c.getDeclaredConstructors(); // Problem is here
h = (DynamicSurrogate) ctorlist[0].newInstance(genericType);
return h;
}
Oluşturulan kodudur aşağıdaki gibi kod aşağıdaki hatayı
İstisna atar ... olduğunu "ana" java.lang.VerifyError iş parçacığı: (class: testapp1/Dyn, method: processDouble imza: (Lsomething/Output; Ljava/lang/Object;) V) opc_invokeinterface için tutarsız args_size
bir geçici çözüm var ancak herhangi bir anlam ifade etmiyor, yani dinamik kod
testapp1.Customers temp=(testapp1.Customers)graph;
double[] d = temp.Dubs;
output.processDouble(d);
yılında ise ben sadece çift dizinin bir kopyasını oluşturmak ve dinamik kod yani içinde processDouble onu geçmek eğer her şey iyi çalışır short, exception Unhandled getDeclaredConstructor tarafından atılır ama aslında bir kurucu ile ilgisi yoktur çünkü bir tane oluşturmazsa veya bir
Sorunum ve kod yeterince açıksa, herhangi bir karışıklık varsa lütfen ilerleyin :)