2012-04-10 15 views
46

मैं अमेज़ॅन की क्लाउड सेवाओं का उपयोग करके एक वेबपैप विकसित कर रहा हूं और मुझे JSON ऑब्जेक्ट्स का उपयोग करने की आवश्यकता है। मेरी परियोजना कैसे स्थापित की गई है, मेरे पास एक HTML फॉर्म है जहां उपयोगकर्ता अपनी जानकारी भरकर सबमिट करेगा। एक बार सबमिट करने के बाद डेटा को ऑनलाइन डेटाबेस में रखा जाएगा और उन्हें एक पुष्टिकरण ईमेल भेजा जाएगा। डेटा बेस पर डेटा जमा करने से पहले मुझे इसे सभी JSON ऑब्जेक्ट में रखना होगा। मेरे सर्वलेट, जावा में किया, इस तरह दिखता है:NoClassDefFoundError JsonAutoDetect JSON ऑब्जेक्ट को पार्स करते समय

public class FormHandling extends HttpServlet { 
    //doGet function 
    public void doGet (HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 
     // In this part of the code I take in the user data and build an HTML 
     // page and return it to the user 

     // Create String Mapping for User Data object 
     Map<String,Object> userData = new HashMap<String,Object>(); 

     // Map the names into one struct. In the code below we are creating 
     // values for the nameStruct from the information the user has 
     // submitted on the form. 
     Map<String,String> nameStruct = new HashMap<String,String>(); 
     nameStruct.put("fName", request.getParameter("fname")); 
     nameStruct.put("lName", request.getParameter("lname")); 
     nameStruct.put("mInit", request.getParameter("minit")); 

     // Map the three email's together (providing there are 3). 
     // This is the same logic as the names. 
     Map<String,String> emailStruct = new HashMap<String,String>(); 
     emailStruct.put("email", request.getParameter("email1")); 
     emailStruct.put("email", request.getParameter("email2")); 
     emailStruct.put("email", request.getParameter("email3")); 

     // Put Name Hash Value Pair inside User Data Object 
     userData.put("name", nameStruct); 
     userData.put("emails", emailStruct); 
     userData.put("age", 22); 

     // Create the Json data from the userData 
     createJson(userData); 

     // Close writer 
     out.close(); 
    } 

    public File createJson(Map<String,Object> userData) 
     throws JsonGenerationException, JsonMappingException, IOException { 
     File user = new File("user.json"); 

     // Create mapper object 
     ObjectMapper mapper = new ObjectMapper(); 

     // Add the userData information to the json file 
     mapper.writeValue(user, userData); 
     return user; 
    } 
} 

मुझे इस कोड मैं निम्न त्रुटि संदेश मिलता है का उपयोग कर प्रपत्र सबमिट:

java.lang.NoClassDefFoundError: com/fasterxml/jackson/annotation/JsonAutoDetect com.fasterxml.jackson.databind.introspect.VisibilityChecker$Std.(VisibilityChecker.java:169) com.fasterxml.jackson.databind.ObjectMapper.(ObjectMapper.java:197) edu.tcnj.FormHandling.createJson(FormHandling.java:115) edu.tcnj.FormHandling.doGet(FormHandling.java:104) edu.tcnj.FormHandling.doPost(FormHandling.java:131) javax.servlet.http.HttpServlet.service(HttpServlet.java:641) javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

अब मुझे पता है कि त्रुटि का अर्थ है कि यह नहीं ' जैक्सन डेटाबेस पुस्तकालय खोज नहीं। मैं ग्रहण में विकास कर रहा हूं और मुझे पता है कि बिल्ड पथ समय-समय पर गड़बड़ कर रहा है, इसलिए मैंने पुस्तकालयों को वेबकंटेंट \ WEB-INF \ lib फ़ोल्डर में भी रखा है। इससे पहले के मुद्दों को हल किया गया है। हालांकि, यह इस समय मेरी समस्या को हल करने के लिए प्रतीत नहीं होता है। मैंने जार फ़ाइलों को भौतिक रूप से जांचने के लिए भी खोला है कि पुस्तकालय और कक्षा की आवश्यकता है, और वे हैं। मैंने लाइब्रेरी को शामिल करने के लिए पूरी तरह से खोज करने और विभिन्न तरीकों की तलाश करने की कोशिश की है लेकिन कुछ भी काम नहीं करता है।

+0

आप हमें आप उपयोग कर रहे जैक्सन पुस्तकालय का कौन सा संस्करण पता है सकते हैं? –

+0

मैं दो जार, 'जैक्सन कोर-lgpl-1.5.6.jar' और' जैक्सन-नक्शाकार-lgpl-1.5.6.jar' जरूरत –

+3

बाहर कर देता है मैं एक तिहाई जार याद आ रही थी .... ओह। बहुत आसन। मेरे लिए मैं जैक्सन DataBind, कोर, और एनोटेशन पुस्तकालयों का उपयोग करने की आवश्यकता है। मैं संस्करण 2.0 का उपयोग कर रहा हूँ। एक बार मुझे लगता है कि तीसरे जार पाया यह खुश थी। फिर भी आपका धन्यवाद! – jhahn

उत्तर

125

जो लोग भविष्य में यहाँ आया के लिए, जवाब है:

आप केवल jackson core और jackson databind कॉपी किया है, तो आप jackson annotations जरूरत ObjectMapper उपयोग करने के लिए।

उदाहरण के लिए

, सुनिश्चित करें कि आप कुछ इस तरह किया है:

[16:32:01]:/android-project/libs  master]$ ls -lAF 
total 2112 
[email protected] 1 jeffamaphone staff 33525 Jun 18 16:06 jackson-annotations-2.0.2.jar 
[email protected] 1 jeffamaphone staff 193693 Jun 7 16:42 jackson-core-2.0.2.jar 
[email protected] 1 jeffamaphone staff 847121 Jun 18 15:22 jackson-databind-2.0.2.jar 
+11

और इसे http://wiki.fasterxml.com/JacksonDownload से डाउनलोड किया जा सकता है। (आपको एक Google बचाओ।) – ericsoco

+0

ऑब्जेक्टमैपर के बिना जैक्सन के साथ जेसन से लिखना और पढ़ना भी संभव है? – CorayThan

+0

उस समय, मेरे मामले में, इसके बिना कुछ JSON पढ़ना संभव था। मुझे यकीन नहीं है कि चीजों की स्थिति अब क्या है। –

63

@ jeffamaphone उत्तम जवाब पर विस्तार करने के लिए, Maven उपयोगकर्ताओं

<dependency> 
    <groupId>com.fasterxml.jackson.core</groupId> 
    <artifactId>jackson-core</artifactId> 
    <version>2.7.3</version> 
</dependency> 

<dependency> 
    <groupId>com.fasterxml.jackson.core</groupId> 
    <artifactId>jackson-databind</artifactId> 
    <version>2.7.3</version> 
</dependency> 

<dependency> 
    <groupId>com.fasterxml.jackson.core</groupId> 
    <artifactId>jackson-annotations</artifactId> 
    <version>2.7.3</version> 
</dependency> 
+1

धन्यवाद, यह स्प्रिंग एसेसिंग ट्विटर डेटा ट्यूटोरियल https करने के बाद मेरे लिए काम किया : //spring.io/guides/gs/accessing-twitter/ – wired00

+0

मेरे लिए भी काम किया। धन्यवाद – siddhusingh

7

या निम्न Gradle विन्यास के लिए:

compile 'com.fasterxml.jackson.core:jackson-core:2.2.2' 
compile 'com.fasterxml.jackson.core:jackson-databind:2.2.2' 
compile 'com.fasterxml.jackson.core:jackson-annotations:2.2.2' 
1

यदि आप मेवेन का उपयोग करते हैं और मेरे पुस्तकालय में सभी पुस्तकालयों की जगह एक साधारणहैऔर mvn install निश्चित समस्या।

0

आप कर रहे हैं/बिल्ला उपयोग कर रहे थे, जबकि ग्रहण में विकसित करने और यह त्रुटि आई (शायद क्योंकि आप दबाया पुनर्प्रकाशन/साफ),

पर परियोजना> Maven-> अद्यतन परियोजना राइट क्लिक ...

मेरे लिए इस समस्या को हल किया।

इसके अलावा, मैं भी जोहान सजोबर्ग से निर्भरता शामिल किया

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