Teddy
Teddy

Reputation: 46

Is it possible to replace com.jayway.jsonpath_0.8.1.wso2v1.jar with json-path-2.2.0.jar

I'm trying to use a newer version of JsonPath in ESB 5.0.0 and I'm getting the following error

java.lang.NoClassDefFoundError: com/jayway/jsonpath/Configuration
    at net.sample.<init>(FuzzyJsonProvider.groovy:15)
    at net.sampel2(class.java:102)
    at net.class2(class.java:67)
    at net.class2(class.java:62)
    at net.class4.mediate(class.java:75)
    at org.apache.synapse.mediators.ext.ClassMediator.mediate(ClassMediator.java:84)
    at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:97)
    at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:59)
    at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:158)
    at org.apache.synapse.rest.Resource.process(Resource.java:343)
    at org.apache.synapse.rest.API.process(API.java:399)
    at org.apache.synapse.rest.RESTRequestHandler.apiProcess(RESTRequestHandler.java:123)
    at org.apache.synapse.rest.RESTRequestHandler.dispatchToAPI(RESTRequestHandler.java:101)
    at org.apache.synapse.rest.RESTRequestHandler.process(RESTRequestHandler.java:69)
    at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:304)
    at org.apache.synapse.core.axis2.SynapseMessageReceiver.receive(SynapseMessageReceiver.java:75)
    at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
    at org.apache.synapse.transport.passthru.ServerWorker.processNonEntityEnclosingRESTHandler(ServerWorker.java:325)
    at org.apache.synapse.transport.passthru.ServerWorker.processEntityEnclosingRequest(ServerWorker.java:371)
    at org.apache.synapse.transport.passthru.ServerWorker.run(ServerWorker.java:151)
    at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
 Caused by: java.lang.ClassNotFoundException: com.jayway.jsonpath.Configuration cannot be found by sample_1.0.2_SNAPSHOT_1.0.0
    at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:475)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:421)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:412)
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 24 more

I've attempted putting the 3rd party jar in the appropriate lib folder and once the server starts the 3rd party jar shows up in the dropins folder. Any ideas if replacing the old jsonPath jar is possible?

Upvotes: 0

Views: 182

Answers (1)

Teddy
Teddy

Reputation: 46

The short answer is no since the ESB does not update the package namespace once a lib is loaded.. ie com.jayway...0.8.1 isn't replaced or updated by the one in 2.2.0

The best way to get this working is to use Shadow to package the libs you need in your own FatJar and load that into the ESB.

Upvotes: 1

Related Questions