Tôi đang phát triển một ứng dụng web sử dụng dịch vụ đám mây của Amazon và tôi cần sử dụng các đối tượng JSON. Dự án của tôi được thiết lập như thế nào, tôi có một biểu mẫu HTML nơi người dùng sẽ điền thông tin của họ và gửi. Sau khi gửi dữ liệu sẽ được đặt vào cơ sở dữ liệu trực tuyến và email xác nhận sẽ được gửi đến chúng. Trước khi tôi có thể gửi dữ liệu đến cơ sở dữ liệu, tôi cần phải đặt tất cả dữ liệu đó vào một đối tượng JSON. servlet của tôi, được thực hiện trong Java, trông như thế này:NoClassDefFoundError JsonAutoDetect khi phân tích cú pháp đối tượng 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;
}
}
Khi tôi gửi biểu mẫu sử dụng mã này tôi nhận được thông báo lỗi sau:
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)
Bây giờ tôi biết lỗi đó có nghĩa là nó isn' t tìm thư viện dữ liệu Jackson. Tôi đang phát triển trong Eclipse và tôi biết xây dựng đường dẫn messes lên theo thời gian vì vậy tôi cũng đặt các thư viện trong thư mục WebContent \ WEB-INF \ lib. Điều này đã giải quyết được vấn đề tôi đã có trước đây. Tuy nhiên, điều này dường như không giải quyết được vấn đề của tôi lần này. Tôi thậm chí đã mở các tập tin jar để kiểm tra thực tế rằng thư viện và lớp học cần thiết đang có, và họ đang có. Tôi đã cố gắng tìm kiếm trên tất cả và tìm kiếm các cách khác nhau để bao gồm các thư viện nhưng không có gì có vẻ làm việc.
Bạn có thể cho chúng tôi biết phiên bản thư viện Jackson bạn đang sử dụng không? –
Tôi cần hai JAR, 'jackson-core-lgpl-1.5.6.jar' và 'jackson-mapper-lgpl-1.5.6.jar' –
Hóa ra tôi đã thiếu một bình thứ ba .... ugh. Quá dễ. Đối với tôi, tôi cần sử dụng thư viện dữ liệu, lõi và thư viện chú thích jackson. Tôi đang sử dụng phiên bản 2.0. Khi tôi tìm thấy cái bình thứ ba, nó rất vui. Cảm ơn bạn mặc dù! – jhahn