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
