HeartSaVioR:

Is this correct?

so, effectively, storm forces topology code to make use of the version of its 
libraries.

In this instance, the developer’s topology wishes to make use of 
com.googlecode.json-simple version 1.1.1
Storm version 0.9.4 uses com.googlecode.json-simple version 1.1
Therefore, all topologies run on 0.9.4 are forced to use version 1.1 of 
com.googlecode.json-simple

Storm version 0.9.4:
http://mvnrepository.com/artifact/org.apache.storm/storm-core/0.9.4

If we wanted to use a later version of com.googlecode.json-simple, we could go 
to the lib directory of our storm installation, and replace the lower version 
of the jar.  For instance, in my installation, /opt/apache-storm-0.9.4/lib, the 
jar is json-simple-1.1.jar.  I would delete json-simple-1.1.jar and replace it 
with json-simple-1.1.1.jar.  At that point, all I would need to do is kill the 
worker in any topologies requiring com.googlecode.json-simple version 1.1.1 ( 
If they had not already died due to an un-hanlded exception ).  The supervisor 
would then restart the worker, which would pick up the new, 1.1.1 jar.

This will only work if the com.google.code.json-simple library, 1.1.1 is 
backwards compatible with the com.google.cod.json-simple 1.1 library.


From: 임정택 <[email protected]<mailto:[email protected]>>
Reply-To: "[email protected]<mailto:[email protected]>" 
<[email protected]<mailto:[email protected]>>
Date: 2015,Wednesday, May 6 at 09:44
To: "[email protected]<mailto:[email protected]>" 
<[email protected]<mailto:[email protected]>>
Subject: Re: Conflict with json-simple

Hi.

Unfortunately, Storm adds all jars in <storm root>/lib directory to classpath 
first.
Recently Storm relocates some libraries to reduce dependency conflict (please 
see http://storm.apache.org/2014/11/25/storm093-released.html) but json-simple 
is not in.

You can try replacing json-simple-1.1.jar to json-simple-1.1.1.jar in your 
storm cluster's lib directory and restart cluster / submit your topology, but 
please note that it should be backward compatible to let Storm runs without 
issue.

Bests.
Jungtaek Lim (HeartSaVioR)

2015-05-06 18:30 GMT+09:00 Ferran Muñoz 
<[email protected]<mailto:[email protected]>>:
Hi,

I am using a library in a bolt of my topology that depends on json-simple 
v1.1.1 because it uses the JSONObject constructor that accepts a java.util.Map 
parameter.

I have a conflict because Storm depends on json-simple v1.1. So, when I run my 
topology I get the exception:

java.lang.NoSuchMethodError: org.json.simple.JSONObject: method 
<init>(Ljava/util/Map;)V not found

How can I tackle with this?

Thanks in advance and best regards,

Ferran



--
Name : 임 정택
Blog : http://www.heartsavior.net / http://dev.heartsavior.net
Twitter : http://twitter.com/heartsavior
LinkedIn : http://www.linkedin.com/in/heartsavior

Reply via email to