Exception in thread "main" java.lang.NoSuchMethodError: com.fasterxml.jackson.core.JsonFactory.requiresPropertyOrdering()Z

JavaJackson

Java Problem Overview


I need to convert json to pojo. I Decided to use jackson and have added jackson-core-2.2.0.jar, jackson-databind-2.4.4.jar and jackson-annotations-2.1.2.jar to my project's classpath

I created following Main class:

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);

  }
}

And following AwardList class:

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;
	}
}

I want to convert json to pojo and save it in the database. I keep getting following error:

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

Java Solutions


Solution 1 - Java

I was getting the exactly same issue. I was using Maven for dependency management and had added dependency for jackson-databind module only like this

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

and then I resolved it by doing this.. I added its transitive dependencies explicitly with the same jackson.version mentioned for each of them in the pom.xml file, as guided 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>

Solution 2 - Java

I came here with a similar issue on Google App Engine. Here is how I fixed it.

First I ran:

mvn dependency:tree

To find who is using the older version. I then excluded that from the offending dependency like so:

<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>

Next I added the newer version of the dependency in my pom.xml:

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

Hope this help others who stumble here.

Solution 3 - Java

I had the same issue. There was some incompatibility between the jackson-version 2.6.3 and another dependency (graphaware-framework-embedded).

I could resolve the issue by simply removing the dependency on jackson in my own pom and just let the other dependency load whatever jackson-version it needed.

Solution 4 - Java

I faced the same issue just now while upgrading my project from spring 3 to 4.1.6.

A little background for reference, just in case if it helps anyone running into same issue===> First, it prompted me with error for mappingJacksonconverter vs mappingJackson2converter since the former doesn't exist anymore with spring 4. Once I changed those references in code, I ran into issue with my dispatcher servlet since it had xsd definitions from spring 3 support. Once that's corrected, my last step in journey was this error which you all faced as well.

My solution: I had older versions of following jars: jackson-annotations, jackson-core, jackson-databind, jackson-core-asl, jackson-mapper-asl

I upgraded first 3 jars to 2.10.0.pr1 release and last 2 to 1.9.13 release.

I also had one more older jar i.e.com.fasterxml.jackson.core.jar which I had to remove as well. Anyways, as error suggested this was the key reason for the mismatch (Like Tobias said in comment prior to mine)

I think only last paragraph is important from this particular question point of view, but I am hoping my narration of issues faced leading up to that may help someone saving 4-5 hrs :) Cheers, folks!

Solution 5 - Java

As of now latest redisson

<dependency>
	<groupId>org.redisson</groupId>
	<artifactId>redisson</artifactId>
	<version>3.13.4</version>
</dependency>

Latest Jackson jackson.version property is 2.11.2 for me

	<!-- faster JSON -->
	<dependency>
		<groupId>com.fasterxml.jackson.core</groupId>
		<artifactId>jackson-databind</artifactId>
		<version>${jackson.version}</version>
	</dependency>
	<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>

Updating Eclipse references, without this runner configs were accessing earlier edition of jackson project.

eclipse:eclipse -U

Solution 6 - Java

For me, I updated the version to a recently released version i.e. 2.12.4 and it worked fine.

Note: I was using another project inside the build path of a larger project in eclipse. The jackson update was done inside the pom.xml file of the smaller project.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionjbakirovView Question on Stackoverflow
Solution 1 - JavaPriya AggarwalView Answer on Stackoverflow
Solution 2 - JavaJeffrey HawkinsView Answer on Stackoverflow
Solution 3 - JavaTobias GassmannView Answer on Stackoverflow
Solution 4 - JavamranaView Answer on Stackoverflow
Solution 5 - JavaDavut GürbüzView Answer on Stackoverflow
Solution 6 - JavaOnkar SinghView Answer on Stackoverflow