JarHell ERROR: Classpath should not contain empty elements!


(Isra) #1

I created a java file using Elasticsearch JAVA API. in netbeans, everything worked just fine.

However, I started getting the following error:

org/elasticsearch/plugins/PluginsService.java:342:in `loadBundles': java.lang.IllegalStateException: failed to load bundle [file:/D:/ELK-2.0/elasticsearch-2.0.0/plugins/license/license-2.0.0.jar, file:/D:/ELK-2.0/elasticsearch-2.0.0/plugins/license/license-core-2.0.0.jar, file:/D:/ELK-2.0/elasticsearch-2.0.0/plugins/license/license-plugin-api-2.0.0.jar, file:/D:/ELK-2.0/elasticsearch-2.0.0/plugins/marvel-agent/marvel-agent-2.0.0.jar] due to jar hell
from org/elasticsearch/plugins/PluginsService.java:113:in `<init>'
from org/elasticsearch/node/Node.java:144:in `<init>'
from org/elasticsearch/node/NodeBuilder.java:145:in `build'
from spamdetection/SpamDetection.java:63:in `client'
from spamdetection/SpamDetection.java:30:in `SpammerDetector'
from java/lang/reflect/Method.java:497:in `invoke'
from spam.rb:53:in `(root)'
from spam.rb:53:in `(root)'
Caused by:
JarHell.java:120:in `parseClassPath': java.lang.IllegalStateException: Classpath should not contain empty elements! (outdated shell script from a previous version?) classpath=''
from JarHell.java:95:in `parseClassPath'
from PluginsService.java:338:in `loadBundles'
from PluginsService.java:113:in `<init>'
from Node.java:144:in `<init>'
from NodeBuilder.java:145:in `build'
from SpamDetection.java:63:in `client'
from SpamDetection.java:30:in `SpammerDetector'
from NativeMethodAccessorImpl.java:-2:in `invoke0'
from NativeMethodAccessorImpl.java:62:in `invoke'
from DelegatingMethodAccessorImpl.java:43:in `invoke'
from Method.java:497:in `invoke'
from JavaMethod.java:451:in `invokeDirectWithExceptionHandling'
from JavaMethod.java:312:in `invokeDirect'
from InstanceMethodInvoker.java:45:in `call'
from CachingCallSite.java:326:in `cacheAndCall'
from CachingCallSite.java:170:in `call'
from spam.rb:53:in `__file__'
from spam.rb:-1:in `load'
from Ruby.java:857:in `runScript'
from Ruby.java:850:in `runScript'
from Ruby.java:729:in `runNormally'
from Ruby.java:578:in `runFromMain'
from Main.java:395:in `doRunFromMain'
from Main.java:290:in `internalRun'
from Main.java:217:in `run'
from Main.java:197:in `main'

When trying to call my java jar from jruby. Whats causing this error?? How do I get rid of it?

The following is my java code. I've manually included all the jar files needed besides elasticsearch-2.0.0.jar

public boolean mymethod(String Username) {

Node node = NodeBuilder.nodeBuilder().client(true).settings(
Settings.builder()
    .put(ClusterName.SETTING, "elasticsearch")
    .put("path.home", "PATH/TO/elasticsearch-2.0.0/")
    ).build().start();
   Client client = node.client();

    QueryBuilder qb = matchQuery(
        "user.screen_name",                  
         Username   
    );

   CountResponse response = client.prepareCount("logstash-*")
    .setTypes("tweet").setQuery(qb)
    .execute()
    .actionGet();

return response.getCount() != 0;
}
....

The error rises when I call this code from a Jruby file. Help pelase!!!

Thank you.


(Isra) #2

I noticed that when I move the jruby file to elasticsearch home path, it works just fine... hmmm why is that?


(system) #3