2010-05-19 15 views
7

मुझे ऑब्जेक्टिस्ट्स के एरेलेलिस्ट को लौटने के समय का एक बिल्ली है जो आरपीसी के माध्यम से IsSerializable को लागू करता है। IsSerializable pojo में एक चर, एक स्ट्रिंग है, और इसमें 0 पैरामीटर कन्स्ट्रक्टर है। मैं अपने युद्ध से .gwt.rpc फ़ाइल को हटा दिया है और अब भी मैं:जीडब्ल्यूटी सीरियलाइजेशन इश्यू

com.google.gwt.user.client.rpc.SerializationException: Type 'com.test.myApp.client.model.Test' was not included in the set of types which can be serialized by this SerializationPolicy or its Class object could not be loaded. For security purposes, this type will not be serialized.: instance = [email protected] 
at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serialize(ServerSerializationStreamWriter.java:610) 

मैं JDK 1.6.0_18 साथ GWT 2.0.2 का उपयोग कर रहा हूँ।

क्या हो रहा है या मैं क्या गलत कर रहा हूं पर कोई विचार?

यहां टेस्ट क्लास का कोड है और रिमोट विधि ArrayList लौट रही है। मैंने इसके परिणाम को भी उसी परिणाम के साथ टेस्ट के एक उदाहरण को वापस करने के लिए संशोधित किया: ऊपर अपवाद।

package com.test.myApp.client.model; 

import com.google.gwt.user.client.rpc.IsSerializable; 

public class Test implements IsSerializable{ 
    private String s; 

    public Test() {} 

    public Test(String s) { 
     this.s = s; 
    } 

    public String getS() { 
     return s; 
    } 

    public void setS(String s) { 
     this.s = s; 
    } 
} 

मदद की बहुत सराहना करते हैं! एडी

+0

क्या आप क्लाइंट.मोडेल.स्टेस्ट के लिए कोड प्रकाशित कर सकते हैं? – Stevko

+0

शायद टेस्ट क्लास में उदाहरण फ़ील्ड में से एक धारावाहिक नहीं है। अधिक सहायता के लिए कोड पोस्ट करें। – Carnell

+0

क्या आपने अपनी दूरस्थ सेवा विधि को ArrayList लौटने के रूप में घोषित किया है? यदि आप सिर्फ ऐरेलिस्टिस्ट घोषित करते हैं तो जीडब्ल्यूटी को यह नहीं पता होगा कि आपको टेस्ट को क्रमबद्ध करने की आवश्यकता होगी। उपर्युक्त टिप्पणीकर्ता सुझाव देते हैं, कोड पोस्ट करें। – tgdavies

उत्तर

1

रिमोट विधि को ArrayList<Test> वापस करने की आवश्यकता है, न केवल ArrayList, ताकि जीडब्ल्यूटी समझ सके कि Test के उदाहरणों को क्रमबद्ध करने की आवश्यकता होगी।

+0

रिमोट विधि ArrayList लौट रही है। जैसे मैंने कहा, मैंने भी उसी परिणाम के साथ टेस्ट के एक उदाहरण को वापस करने का प्रयास किया। – Eddy

1

मुझे सीरियलज़ेबल इंटरफ़ेस घोषणा का उपयोग करने के लिए उपयोग किया जाता है, इसलिए यह उत्तर लागू नहीं हो सकता है।

ग्रहण हमेशा मुझे किसी भी Serializable वर्ग के लिए एक serialVersionUID सदस्य बनाने के लिए संकेत देता है।

private static final long serialVersionUID = 2388319784164372900L; 

एक विचार था कि बस मुझे मारा, कुछ आपके निर्माण में सिंक से बाहर है। मेरा सुझाव है कि आप दो चीजें करते हैं: ए) परियोजना | स्वच्छ, और फिर बी) जीडब्ल्यूटी संकलन परियोजना।

+0

मैंने एक उत्पन्न सीरियल VersionUID के साथ Serializable का उपयोग करने की कोशिश की लेकिन यह भी काम नहीं किया। हालांकि धन्यवाद! कोई अन्य विचार? – Eddy

+0

मैंने ए और बी दोनों की कोशिश की है .. वास्तव में कई बार। – Eddy

+0

मैं कल रात इस त्रुटि संदेश में भाग गया। मैंने तैनात किया (कई बार) थोड़ा बड़ा प्रोजेक्ट बल्कि बड़े प्रोजेक्ट को संशोधित किया लेकिन संस्करण संख्या में वृद्धि नहीं की और पुराने वर्ग पर क्रमबद्धता अपवाद प्राप्त किया। अंततः संस्करण संख्या में वृद्धि हुई और पुन: नियोजित - यह साफ़ हो गया। क्या आपकी टेस्ट क्लास जावास्क्रिप्ट में भी अनुवादित है? myApp.gwt.xml <स्रोत पथ = ... /> टैग में शामिल पथ की जांच करें। टिप्पणी में कहा गया है "अनुवाद करने योग्य कोड के लिए पथों को स्पष्ट करें"। – Stevko

0

or its Class object could not be loaded

क्या आपके युद्ध में कॉम/टेस्ट/myApp/client/model/Test.class शामिल है?

5

यह मूर्खतापूर्ण लग सकता है, लेकिन क्या आपके पास आपके कोड में टेस्ट के लिए डिफ़ॉल्ट कन्स्ट्रक्टर है, न केवल आपके द्वारा पोस्ट किए गए कोड के संस्करण पर? मुझे इस त्रुटि का सामना करना पड़ा, इसे गुमराह किया, यहां साफ-सुथरा/पुनर्निर्माण जैसे कई सुझावों की कोशिश की, serialVersionUID जोड़ें, इनमें से कोई भी काम नहीं किया। फिर मैंने और अधिक खोज की और यह सुनिश्चित करने के लिए एक सुझाव मिला कि आप जिस वर्ग को धारावाहिक करने का प्रयास कर रहे हैं वह एक डिफ़ॉल्ट कन्स्ट्रक्टर है। मेरा नहीं था, और जैसे ही मैंने एक जोड़ा, यह काम किया। मुझे नहीं पता कि यह क्यों तय हुआ, लेकिन ऐसा हुआ।

+1

ऐसा इसलिए है क्योंकि जीडब्ल्यूटी सीरियलाइजेशन जावा क्रमबद्धता नहीं है ... एफएक्यू में समझाया गया है: http://code.google.com/intl/fr/webtoolkit/doc/1.6/FAQ_Server.html#Does_the_GWT_RPC_system_support_the_use_of_java.io.Serializable – Vinze

2

मैंने अपनी कक्षा में एक खाली कन्स्ट्रक्टर भी जोड़ा जो समस्या का सामना कर रहा था, और यह ठीक काम करता था।

1) आपका वर्ग Serializable या IsSerializable को लागू नहीं करता है:

0

इन मामलों कि GWT क्रमबद्धता का कारण एक त्रुटि फेंक देंगे। 2) कोई डिफ़ॉल्ट कन्स्ट्रक्टर 3) जीडब्ल्यूटी आपकी कक्षा को "श्वेतसूची" में जोड़ने में असमर्थ है क्योंकि कोड का एक स्थिर विश्लेषण यह नहीं दिखाता है कि आपकी कक्षा आरपीसी में शामिल की जाएगी। ऐसे मामलों के लिए, मैं एक "व्हाइटलिस्ट" एक्शन/परिणाम आरपीसी जोड़ी (कमांड मॉडल के बाद) बना देता हूं और यह सुनिश्चित करता हूं कि क्रिया ऑब्जेक्ट में प्रासंगिक वर्गों के सदस्य हैं जो असफल हो रहे हैं। कभी-कभी आप पाते हैं कि एक गैर-जनरेटेड संग्रह में आरपीसी कॉल के हिस्से के रूप में एक ऑब्जेक्ट वापस किया जाता है और जीडब्ल्यूटी के पास इसमें शामिल होने के लिए कोई संकेत नहीं है। इस मामले में, इसे "व्हाइटलिस्ट" एक्शन क्लास में जोड़ना भी मदद करता है।

0

मैं देखते हैं कि आपकी क्लास "कॉम। परीक्षण .myApp.client.mode" पैकेज में है, सुझाव है कि यह एक "परीक्षण" वर्ग है (और अपने उम्मीद तैनाती का हिस्सा नहीं होना)।

क्या आपकी gwt मॉड्यूल फ़ाइल (myApp.get.xml) वास्तव में com.test.myApp में है?

यदि ऐसा है, तो आपने अपने पैकेज नामों को खराब तरीके से चुना है। अपने मुख्य पैकेज नामों में "परीक्षण" डालने से बचें - सम्मेलन का अर्थ यह है कि यह एक परीक्षण पैकेज है।

यदि नहीं, तो एक "मुख्य" पैकेज, उदाहरण के लिए "कॉम। mycompany .myApp.client.mode" (आपका प्राप्त मॉड्यूल फ़ाइल संभालने com.mycompany.myapp में है) करने के लिए अपने वर्ग जाकर देखें।

1

मुझे भी ऐरेलिस्ट के साथ एक ही समस्या थी। मैंने अभी एक खाली कन्स्ट्रक्टर जोड़ा और यह काम किया। (मेरी कक्षा पहले से ही Serializable लागू)

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