-
Notifications
You must be signed in to change notification settings - Fork 291
Description
If you push a jar to the class path and call java.import, any subsequent jars pushed to the class path seem to fail on the java.import statement. For example, the following causes an error:
var java = require('java');
var path = require('path');
java.classpath.push(path.resolve(__dirname, './lib/Triplet_Extraction.jar'));
var Parser = java.import('com.tadbitstrange.TripletExtraction.CoreNlpParser');
java.classpath.push(path.resolve(__dirname, './lib1/ark-tweet-nlp-0.3.2.jar'));
var Tagger = java.import('cmu.arktweetnlp.Tagger');
Result:
pc-1418-jw[2]> nodejs app.js
/home/halfs13/node_modules/java/lib/nodeJavaBridge.js:16
var clazz = java.findClassSync(name); // TODO: change to Class.forName whenError: Could not create class cmu.arktweetnlp.Tagger
java.lang.NoClassDefFoundError: cmu/arktweetnlp/Tagger
Caused by: java.lang.ClassNotFoundException: cmu.arktweetnlp.Tagger
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)at Java.java.import (/home/halfs13/node_modules/java/lib/nodeJavaBridge.js:16:20)
at Object. (/home/halfs13/workspace/testingNodeJava/app.js:24:25)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
at node.js:901:3
If all jars are added to the classpath before importing any, there is no issue. The following code snippet runs fine:
var java = require('java');
var path = require('path');
java.classpath.push(path.resolve(__dirname, './lib/Triplet_Extraction.jar'));
java.classpath.push(path.resolve(__dirname, './lib1/ark-tweet-nlp-0.3.2.jar'));
var Parser = java.import('com.tadbitstrange.TripletExtraction.CoreNlpParser');
var Tagger = java.import('cmu.arktweetnlp.Tagger');
This was noticed as a problem when using the Gremlin-node module in conjunction with my own code which was calling a java library. Occurred with the following versions:
nodejs v0.10.21
npm 1.3.11
node-java 0.2.4java version "1.6.0_27"
OpenJDK Runtime Environment (IcedTea6 1.12.6) (6b27-1.12.6-1ubuntu0.12.10.2)
OpenJDK 64-Bit Server VM (build 20.0-b12, mixed mode)