का उपयोग करके एक ऐरेलिस्ट बनाने के लिए कैसे मैं उपकरण के दौरान एक विधि में सरणी सूची जोड़ना चाहता हूं। मैंने इसका उल्लेख किया है (Javassist CannotCompileException when trying to add a line to create a Map) लेकिन यह java.lang.VerifyError के साथ एक अलग अपवाद फेंकता है।जावस्सिस्ट
public void createInsertBefore(String scenarioName, String className, CtMethod method,
String insertBefore) throws CannotCompileException {
method.addLocalVariable("startTime", CtClass.longType);
StringBuilder bBuilder = new StringBuilder();
bBuilder.append("startTime = System.nanoTime();");
bBuilder.append("System.out.println(startTime);");
if((insertBefore!=null) && !insertBefore.isEmpty()){
bBuilder.append(insertBefore);
}
bBuilder.append("java.util.List metadata = new java.util.ArrayList();");
System.out.println(bBuilder.toString());
method.insertBefore(bBuilder.toString());
}
प्रिंट बयान से प्राप्त आउटपुट,
startTime = System.nanoTime();
System.out.println(startTime);
java.util.List metadata = new java.util.ArrayList();
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:382)
at sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:397)
Caused by: java.lang.VerifyError
at sun.instrument.InstrumentationImpl.retransformClasses0(Native Method)
at sun.instrument.InstrumentationImpl.retransformClasses(InstrumentationImpl.java:144)
at org.wso2.das.javaagent.instrumentation.Agent.premain(Agent.java:57)
... 6 more
FATAL ERROR in native method: processing of -javaagent failed
Aborted (core dumped)
स्थिति पहले जैसी ही है है लेकिन यह निम्न अपवाद फेंकता है,, लेकिन क्यों यह एक अलग अपवाद है । क्या मैं गलत कर रहा हूँ .... कुछ मदद कृपया ...
अद्यतन 1
लाइनों के साथ जोड़ा (मैं कुछ प्रिंट लाइनों को हटा दिया है), insertBefore,
startTime = System.nanoTime();
java.util.List metadata = new java.util.ArrayList();
insertAt
System.out.println("prepareStatement is running");
java.util.Map/*<String,String>*/ arbitraryMap = new java.util.HashMap/*String,String>*/();
arbitraryMap.put("query",$1);System.out.println(arbitraryMap);
insertAfter
System.out.println(System.nanoTime()-startTime);
देशी कोड में एक त्रुटि की तरह दिखता है। – Thomas
आपका क्या मतलब है? यू मतलब बाकी कोड है? मैंने सोचा कि समस्या उस कथन के साथ है, क्योंकि अगर मैं उस पंक्ति पर टिप्पणी करता हूं, तो उपकरण ठीक काम करता है। इसलिए मुझे लगता है कि यह कथन के साथ कुछ गलत है। – udani
आपका कोड गलत हो सकता है लेकिन त्रुटि यहां होती है: 'sun.instrument.InstrumentationImpl.retransformClasses0 (मूल विधि) 'यानी यह मूल कोड के भीतर है। आपके द्वारा प्राप्त त्रुटि पर JavaDoc कहता है: 'जब "सत्यापनकर्ता" यह पता लगाता है कि एक वर्ग फ़ाइल, हालांकि अच्छी तरह से बनाई गई है, में कुछ प्रकार की आंतरिक असंगतता या सुरक्षा समस्या है। - यह उस वर्ग पर निर्भर हो सकता है जिसे बढ़ाया जा रहा है, शायद आप दो बार डालने की कोशिश कर रहे हैं या पहले से ही 'स्टार्टटाइम', 'मेटाडाटा' नामक एक चर है। – Thomas