javainfosphere-spl

Ibm streams Java operator classloading issue


I'm using IBM Streams 4.1.1 I can't use Elasticsearch client in my Java operator, because it has transitive dependency guava-18.0 lib

 <groupId>org.elasticsearch</groupId>
 <artifactId>elasticsearch</artifactId>
 <version>2.3.2</version>

When I submit my job I see NoSuchMethodError : com/google/common/util/concurrent/MoreExecutors.derectExecutor

It happens because IBM stream has in ext/lib guava-14. How to solve this issue?


Solution

  • I got the asnwer : https://developer.ibm.com/answers/questions/332772/java-operator-classloader-issue.html

    This is fixed in IBM Streams 4.2.

    The Streams runtime now only includes the documented jars in the classloader available to the operator (in addition to any the operator specifies):

    Operator API and samples
    Apache Log4j
    Apache Common Math
    JSON4J
    

    ,This issue has been fixed in IBM Streams 4.2, so that the operator class path provided by the Streams runtime is limited to the operator apis, Apache common math, JSON4J and Apache log4j as documented.