7

अपग्रेड करने के बाद यदि यह त्रुटि दिखाई:Appifyine 1.6.6 में अपग्रेड करने के बाद VerifyError; UrlFetchTransport का उदाहरण नहीं बना सकता - गूगल-api-जावा ग्राहक 1.8.0/1.9.0 बीटा

java.lang.VerifyError: (class: com/mydomain/server/webservices/OAuth2Utils, method: newFlow signature: ()Lcom/google/api/client/googleapis/auth/oauth2/GoogleAuthorizationCodeFlow;) Incompatible argument to function

सुनिश्चित नहीं हैं कि अगर यह संबंधित हो सकती है, लेकिन के बारे में कुछ जानकारी मेरी पर्यावरण:

लिनक्स n53sv 3.2.0-24-जेनेरिक # 38-उबंटू SMP मंगल मई 1 16:18:50 यूटीसी 2012 x86_64 x86_64 x86_64 जीएनयू/लिनक्स जावा संस्करण "1.6.0_31" जावा (टीएम) एसई रनटाइम एनवायरनमेंट (1.6.0_31-बी04) जावा हॉटस्पॉट (टीएम) 64-बिट सर्वर वीएम (बिल्ड 20.6-बी 01, मिश्रित मोड)

अद्यतन:

मैं न्यूनतम करने के लिए समस्या छीन, और यह वास्तव में अविश्वसनीय है। मैंने एक क्लास BadClassTest बनाया और मैं Servlet में BadClassTest का एक उदाहरण बना देता हूं। मेरी BadClassTest इस तरह दिखता है:

public class BadClassTest { 

    public BadClassTest() { 
     com.google.api.client.http.HttpTransport HTTP_TRANSPORT = new com.google.api.client.extensions.appengine.http.urlfetch.UrlFetchTransport(); 
    } 

} 

तो मैं एक उदाहरण बना सकते हैं।

मेरी BadClassTest इस तरह दिखता है:

public class BadClassTest { 

    com.google.api.client.http.HttpTransport HTTP_TRANSPORT = new com.google.api.client.extensions.appengine.http.urlfetch.UrlFetchTransport(); 

    public BadClassTest() { 
     //com.google.api.client.http.HttpTransport HTTP_TRANSPORT = new com.google.api.client.extensions.appengine.http.urlfetch.UrlFetchTransport(); 
    } 

} 

मैं अब BadClassTest का एक उदाहरण नहीं बना कर सकते हैं। मैं निम्न अपवाद में चलाने:

java.lang.VerifyError: (वर्ग: com/klawt/सर्वर/BadClassTest, विधि: हस्ताक्षर:() वी) putfield/putstatic

+0

google-api-java-client 1.9.0-beta में अपग्रेड किया गया; एक ही जांच – koma

+0

मेरे पास पहले जेडीके मुद्दे थे, http://stackoverflow.com/questions/10034900/appengine-devmode-access-denied-java-lang-runtimepermission-accessclassinp – koma

उत्तर

4

अद्यतन (6 जून, 2012): हम क्लाइंट लाइब्रेरी जल्दी अगले सप्ताह के अगले संस्करण में इसे ठीक करने की योजना है। हम comfm.api.client.extensions.appengine पर comfm.api.client.extensions.appengine.http.urlfetch पैकेज का नाम बदलने जा रहे हैं।http

मूल जवाब:

हम समस्या पता लगा: com.google.api.client.extensions.appengine.http.urlfetch.UrlFetchTransport में App इंजन एसडीके में शामिल है appengine-स्थानीय -webapis.jar। यह वर्ग वास्तव में गलती से है, और वास्तव में पूरा जार अनावश्यक है। कार्यस्थल के रूप में हमारी प्राथमिक अनुशंसा केवल आपके ऐप इंजन एसडीके स्थापना से इस जार को हटाना है। यह केवल स्थानीय विकास सर्वर में लोड किया गया है, न कि उत्पादन ऐप इंजन में। मैंने अभी तक यह कोशिश नहीं की है, लेकिन एक और इंजीनियर मुझे आश्वासन देता है कि इसे काम करना चाहिए। कृपया इसे आज़माएं और मुझे बताएं।

यदि वह कार्य-आसपास काम नहीं करता है, तो आप ऐप इंजन एसडीके 1.6.5 में डाउनग्रेड करने का प्रयास कर सकते हैं। Appengine-local-webapis.jar 1.6.6 के लिए नया है, और फिर यह स्थानीय विकास के लिए केवल एक मुद्दा है।

अंत में, यदि यह आपके लिए काम नहीं करता है, तो कोमा द्वारा अनुशंसित NetHttpTransport पर स्विच करें। ऐप इंजन HttpURLConnection कार्यान्वयन में एक बग है (जिस पर NetHttpTransport बनाया गया है) जिसमें यह किसी भी कॉमा द्वारा HTTP प्रतिक्रिया शीर्षलेख को विभाजित करता है। UrlFetchTransport में यह समस्या नहीं है। हालांकि, अधिकांश डेवलपर्स को प्रभावित करने की संभावना नहीं है, उदाहरण के लिए आप रीडायरेक्ट को संभालने वाले हैं और रीडायरेक्ट यूआरएल में कॉमा है। पुराने कैलेंडर डेटा एपीआई संस्करण 2 को छोड़कर किसी भी Google एपीआई के साथ यह कोई मुद्दा नहीं होना चाहिए (नए संस्करण 3 के लिए नहीं)।

मैं अभी यह सुनिश्चित करने के लिए ऐप इंजन टीम के साथ काम कर रहा हूं कि यह अगली रिलीज में तय किया जाएगा। उसके लिए माफ़ करना!

1

मैं पुष्टि मिल गया में बुरा प्रकार इस समस्या में भाग लेने वाले google-api-java-client group में किसी अन्य उपयोगकर्ता से। वर्कअराउंड UrlFetchTransport को छोड़ना है और NetHttpTransport का उपयोग करना है जो आजकल ऐपइंजिन पर समर्थित है।

मैंने यूआरएलफ़ेचट्रांसपोर्ट, तैनाती और सफलता के बजाय नेटहट्स्पट्रांसपोर्ट के साथ एचटीपीट्रांसपोर्ट के अपने वैश्विक उदाहरण के कार्यान्वयन को प्रतिस्थापित किया।

* अद्यतन *

यानिव (गूगल-api-जावा ग्राहक का अनुरोध) से उत्तर:

UrlFetchTransport अभी भी Google अनुप्रयोग इंजन पर की सिफारिश की पसंद माना जाता है। HTTP शीर्षलेखों को पार्स करने के संदर्भ में HttpURLConnection के Google App Engine कार्यान्वयन में कोई दोष है, जबकि UrlFetch में यह दोष नहीं है। लेकिन अगर NetHttpTransport आपके लिए काम कर रहा है, तो आप इसका उपयोग जारी रख सकते हैं।

हालांकि, ईमानदारी से मैंने ऐप इंजन 1.6.6 के साथ इसका प्रयास नहीं किया है। मैंने केवल 1.6.5 पर कोशिश की है। मैं वास्तव में 1.6.6 पर विफल होने के कारणों की जांच देखना चाहता हूं। एक और संभावना यह है कि यह 1.6.6 के लिए नया नहीं है, बल्कि आपके पर्यावरण को स्थापित करने के तरीके के बारे में कुछ अलग है।

+0

बग रिपोर्ट http://code.google.com/p देखें/googleappengine/मुद्दों/विस्तार? id = 7593 – koma

संबंधित मुद्दे