2015-01-02 21 views
34

Tôi cần chuyển đổi json thành pojo. Tôi quyết định sử dụng jackson và đã thêm jackson-core-2.2.0.jar, jackson-databind-2.4.4.jar và jackson-chú thích-2.1.2.jar vào đường dẫn lớp của dự án của tôiNgoại lệ trong chủ đề "chính" java.lang.NoSuchMethodError: com.fasterxml.jackson.core.JsonFactory.requiresPropertyOrdering() Z

Tôi đã tạo sau Main lớp :

import java.io.IOException; 
import java.net.MalformedURLException; 
import java.net.URL; 
import java.util.List; 
import com.fasterxml.jackson.core.JsonGenerationException; 
import com.fasterxml.jackson.core.JsonProcessingException; 
import com.fasterxml.jackson.databind.JsonMappingException; 
import com.fasterxml.jackson.databind.JsonNode; 
import com.fasterxml.jackson.databind.ObjectMapper; 
import com.fasterxml.jackson.core.JsonGenerationException; 
import com.fasterxml.jackson.core.type.TypeReference; 
import com.fasterxml.jackson.databind.JsonMappingException; 
import com.fasterxml.jackson.databind.ObjectMapper; 
import com.fasterxml.jackson.databind.DeserializationFeature; 

public class Json { 
private static String SRC= ""; 

    public static void main(String[] args) { 

     AwardList awardList = null; 
     ObjectMapper mapper = new ObjectMapper(); 

     try{ 
      awardList = (AwardList) mapper.readValue(new URL(SRC), AwardList.class); 
     }catch (JsonGenerationException e){ 
      e.printStackTrace(); 
     } catch (JsonMappingException e){ 
      e.printStackTrace(); 
     } catch (IOException e){ 
      e.printStackTrace(); 
     } 
     System.out.println(awardList); 

    } 
} 

và sau AwardList lớp:

public class AwardList { 

    private Flights[] flights; 
    private String[] connections; 

    private SaverEconomy saverEconomy; 
    private StandartEconomy standartEconomy; 
    private SaverBusiness saverBusiness; 
    private StandartFirst standartFirst; 
    private SaverFirst saverFirst; 


    public Flights[] getFlights() { 
     return flights; 
    } 

    public void setFlights(Flights[] flights) { 
     this.flights = flights; 
    } 

    public SaverEconomy getSaverEconomy() { 
     return saverEconomy; 
    } 

    public void setSaverEconomy(SaverEconomy saverEconomy) { 
     this.saverEconomy = saverEconomy; 
    } 

    public StandartEconomy getStandartEconomy() { 
     return standartEconomy; 
    } 

    public void setStandartEconomy(StandartEconomy standartEconomy) { 
     this.standartEconomy = standartEconomy; 
    } 

    public SaverBusiness getSaverBusiness() { 
     return saverBusiness; 
    } 

    public void setSaverBusiness(SaverBusiness saverBusiness) { 
     this.saverBusiness = saverBusiness; 
    } 

    public StandartFirst getStandartFirst() { 
     return standartFirst; 
    } 

    public void setStandartFirst(StandartFirst standartFirst) { 
     this.standartFirst = standartFirst; 
    } 

    public SaverFirst getSaverFirst() { 
     return saverFirst; 
    } 

    public void setSaverFirst(SaverFirst saverFirst) { 
     this.saverFirst = saverFirst; 
    } 

    public String[] getConnections() { 
     return connections; 
    } 

    public void setConnections(String[] connections) { 
     this.connections = connections; 
    } 
} 

tôi muốn chuyển đổi json để POJO và lưu nó trong cơ sở dữ liệu. Tôi tiếp tục nhận được lỗi sau:

Exception in thread "main" java.lang.NoSuchMethodError: com.fasterxml.jackson.core.JsonFactory.requiresPropertyOrdering()Z 
    at com.fasterxml.jackson.databind.ObjectMapper.<init>(ObjectMapper.java:457) 
    at com.fasterxml.jackson.databind.ObjectMapper.<init>(ObjectMapper.java:379) 
    at Json.main(Json.java:72) 
+4

Tại sao bạn đang sử dụng các phiên bản khác nhau của lọ Jackson? Bạn có jackson-core, jackson-databind, jackson-chú thích nhưng tất cả chúng có phiên bản khác nhau? Bước đầu tiên tôi khuyên bạn nên sử dụng cùng một phiên bản phát hành. Chỉ dành cho phiên bản thông tin 2.5 đã được phát hành hôm nay. –

+2

Bạn có một phiên bản khác của lọ jackson đang tải trước các lọ này. kiểm tra phiên bản khác và loại bỏ các phiên bản khác – NullPointerException

+0

Làm việc cho tôi quá bằng cách sử dụng cùng một phiên bản: – Imeksbank

Trả lời

58

Tôi đã nhận được cùng một vấn đề tương tự. Tôi đã sử dụng Maven quản lý phụ thuộc và đã thêm vào phụ thuộc cho module jackson-DataBind chỉ như thế này

<dependency> 
    <groupId>com.fasterxml.jackson.core</groupId> 
    <artifactId>jackson-databind</artifactId> 
    <version>${jackson.version}</version> 
</dependency> 

và sau đó tôi giải quyết nó bằng cách làm này .. Tôi thêm phụ thuộc bắc cầu của mình một cách rõ ràng với jackson.version cùng đề cập đến cho mỗi người trong số họ trong tệp pom.xml, như được hướng dẫn here

<dependency> 
    <groupId>com.fasterxml.jackson.core</groupId> 
    <artifactId>jackson-annotations</artifactId> 
    <version>${jackson.version}</version> 
</dependency> 
<dependency> 
    <groupId>com.fasterxml.jackson.core</groupId> 
    <artifactId>jackson-core</artifactId> 
    <version>${jackson.version}</version> 
</dependency> 
+0

Điều này làm việc cho tôi, nhưng lưu ý cái bình này sau đó sẽ xuất hiện trong classpath trước khi lọ có phiên bản trước đó của jackson. –

+0

Điều này làm việc cho tôi .. cảm ơn .. tôi đã thêm ở trên cả hai whith của tôi jackson-databind dependancy – Nilesh

4

Tôi gặp vấn đề tương tự. Có một số sự không tương thích giữa phiên bản 2.6.3 của jackson và một phụ thuộc khác (graphaware-framework-embedded).

Tôi có thể giải quyết vấn đề bằng cách xóa phụ thuộc vào jackson trong pom của riêng tôi và chỉ cho phép tải phụ thuộc khác bất kể phiên bản jackson nào cần.

11

Tôi đến đây với sự cố tương tự trên Google App Engine. Đây là cách tôi sửa nó.

Trước tiên tôi chạy:

mvn dependency:tree 

Để tìm ai đang sử dụng phiên bản cũ hơn. sau đó tôi loại trừ khả năng từ sự phụ thuộc vi phạm như vậy:

<dependency> 
    <groupId>com.google.appengine.tools</groupId> 
    <artifactId>appengine-gcs-client</artifactId> 
    <version>0.6</version> 
    <exclusions> 
     <exclusion> 
      <groupId>com.fasterxml.jackson.core</groupId> 
      <artifactId>jackson-core</artifactId> 
     </exclusion> 
    </exclusions> 
</dependency> 

Tiếp theo, tôi thêm vào phiên bản mới hơn của sự phụ thuộc trong pom.xml của tôi:

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

Hy vọng điều này giúp đỡ những người khác vấp ngã ở đây.

Các vấn đề liên quan