I have an on-prem development environment (JBOSS,outsystems 9) that has the ardoJSON extension published. I know ardoJSON uses Jackson for it's JSON2RecordList action. I also have 2 other extensions that also use a version of Jackson that I haven't yet identified published on the same environment. 

Now recently I noticed that the JSON2RecordList action always fails with the error below:


I am assuming this is because of different Jackson versions being used by the different extensions. 

Does anyone have any ideas on how I can handle this issue or any theories as to why the JSON2RecordList action would throw this error?

(I am thinking I might have to modify all three extensions to use the same Jackson version but would prefer to avoid modifying the extensions if there is a better solution out there.)

Thanks and any thoughts would be greatly appreciated.

Hi Haruna,

requiresPropertyOrdering() is a method of JsonFactory. What you displayed is not an error message. Is it cut off? If so, can you show the full message?

This is the top of the error log from the point where the JSON2Recordlist action is executed. I am unable to just dump the full error log because of the security restrictions. Does this help in any way? 

I apologize for the limited information that I am allowed to provide and any help/suggestions/ideas will be greatly appreciated.

java.lang.NoSuchMethodError: com.fasterxml.jackson.core.JsonFactory.requiresPropertyOrdering()Z
   at com.fasterxml.jackson.databind.ObjectMapper.<init>(ObjectMapper.java:445)
   at com.fasterxml.jackson.databind.ObjectMapper.<init>(ObjectMapper.java:366)
   at outsystems.nosardojson.actions.ActJSON2RecordList.mosJSON2RecordList(ActJSON2RecordList.java:240)
   at osesb.referencesproxy.rssextensionardojson.actions.ActJSON2RecordList.mosJSON2RecordList(Unknown Source)
   at osesb.actions.ActJSON2RecordList.executeJSON2RecordList(Unknown Source)

This indeed seems a versioning problem. Googling for just "requiresPropertyOrdering" shows a number of hits, amongst which this and this, and it looks like a version prior to 2.3 doesn't have that attribute.

Hi Haruna,

Indeed that's a problem of incompatible library versions. Generally there's 2 possible solutions here:

  1. Like you said, alter the extensions to use the same version (or different but compatible versions)
  2. Keep the different versions but alter them so they use different class names and don't cause a conflict (JAR shading). For you case it probably won't be necessary, but in cases it's impossible to alter used versions, it's possible to alter the build.xml script to use something like https://github.com/shevek/jarjar and accomplish that.

You have JAR Hell. Haruna, email me.