I'm trying to initialize a Java instance for a Node.js
project. I want to use this project to manage the dependencies:
https://github.com/joeferner/node-java-maven
and this project as the Java API bridge:
https://github.com/joeferner/node-java
I am using ES6 and I created a class with a static method to initialize and return a Java instance. I don't understand the usage example on the node-java-maven
project page. I have taken their code and copied it into my static initialization method, but the mvn
function doesn't appear to execute. I'm really new to Javascript and Node.js, so I don't know how to invoke the code that actually adds all the dependencies from the maven results to the classpath. All the jar files in the 'resources' folder are added. I just can't figure out how to use node-java-maven
to add the dependencies I specified in my package.json
file.
My environment:
Mac OSX, El Capitan
ES6 Javascript
Java version:
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
My class is here:
export class JavaInit {
static getJavaInstance() {
let fs = require("fs");
let java = require("java");
let mvn = require('node-java-maven');
let baseDir = "./resources";
let dependencies = fs.readdirSync(baseDir);
dependencies.forEach(function(dependency){
java.classpath.push(baseDir + "/" + dependency);
});
java.classpath.push("./target/classes");
java.classpath.push("./target/test-classes");
//Nothing happens here. I set a breakpoint, and nothing inside the brackets executes.
mvn((err, mvnResults) => {
if (err) {
return console.error('could not resolve maven dependencies', err);
}
//This line is never printed to the console when I call the
//getJavaInstance() method
console.log("DID THIS EXECUTE");
mvnResults.classpath.forEach(function(c) {
//There are no lines output to the console indicating that
//dependencies were added to the classpath
console.log('adding ' + c + ' to classpath');
java.classpath.push(c);
});
let Version = java.import('org.apache.lucene.util.Version');
});
return java;
}
}
Here is a copy of the test method I wrote and executed:
import {JavaInit} from "../JavaInit"
describe("Test", () => {
it("Load Java",()=>{
JavaInit.getJavaInstance();
});
});
When I run this test method, the output is this:
[13:48:05] I/launcher - Running 1 instances of WebDriver
[13:48:05] I/local - Starting selenium standalone server...
[13:48:06] I/local - Selenium standalone server started at http://192.168.2.7:63176/wd/hub
Started
2 specs, 0 failures
Finished in 0.274 seconds
resolving parent: org.apache.lucene:lucene-parent:4.9.0
resolving parent: org.apache.lucene:lucene-solr-grandparent:4.9.0
resolving parent: org.apache:apache:13
[13:48:08] I/local - Shutting down selenium standalone server.
[13:48:08] I/launcher - 0 instance(s) of WebDriver still running
[13:48:08] I/launcher - chrome #01 passed
Process finished with exit code 0
Here is a copy of my package.json file:
{
"name": "testsuite",
"version": "1.0.0",
"description": "testsuite",
"scripts": {
"test": "node_modules/protractor/bin/protractor conf.js",
"start_selenium": "node_modules/protractor/node_modules/webdriver-manager/bin/webdriver-manager start",
"update_selenium": "node_modules/protractor/node_modules/webdriver-manager/bin/webdriver-manager update"
},
"dependencies": {
"babel-cli": "^6.24.1",
"babel-preset-es2015": "^6.24.1",
"babel-register": "^6.24.1",
"install": "^0.10.1",
"jasmine": "^2.6.0",
"jasmine-reporters": "^2.2.1",
"java": "^0.8.0",
"node-java-maven": "0.0.12",
"npm": "^5.0.4",
"protractor": "^5.1.2"
},
"keywords": [
"es6"
],
"babel": {
"presets": [
"es2015"
]
},
"java": {
"exclusions": [
{
"groupId": "xml-apis",
"artifactId": "xml-apis"
}
],
"dependencies": [
{
"groupId": "org.apache.lucene",
"artifactId": "lucene-core",
"version": "4.9.0"
},
{
"groupId": "com.google.code.findbugs",
"artifactId": "jsr305",
"version": "3.0.2"
},
{
"groupId": "com.google.code.findbugs",
"artifactId": "findbugs",
"version": "3.0.1"
},
{
"groupId": "com.google.code.findbugs",
"artifactId": "annotations",
"version": "3.0.1"
},
{
"groupId": "org.slf4j",
"artifactId": "slf4j-ext",
"version": "1.7.12"
},
{
"groupId": "org.slf4j",
"artifactId": "slf4j-api",
"version": "1.7.12"
},
{
"groupId": "ch.qos.logback",
"artifactId": "logback-core",
"version": "1.1.3"
},
{
"groupId": "ch.qos.logback",
"artifactId": "logback-classic",
"version": "1.1.3"
},
{
"groupId": "org.testng",
"artifactId": "testng",
"version": "6.9.9"
},
{
"groupId": "org.projectlombok",
"artifactId": "lombok",
"version": "1.16.6"
},
{
"groupId": "org.apache.commons",
"artifactId": "commons-lang3",
"version": "3.4"
},
{
"groupId": "org.apache.commons",
"artifactId": "commons-collections4",
"version": "4.0"
},
{
"groupId": "com.fasterxml.jackson.core",
"artifactId": "jackson-core",
"version": "2.9.0.pr2"
},
{
"groupId": "com.fasterxml.jackson.core",
"artifactId": "jackson-databind",
"version": "2.9.0.pr2"
},
{
"groupId": "com.fasterxml.jackson.core",
"artifactId": "jackson-annotations",
"version": "2.9.0.pr2"
},
{
"groupId": "com.fasterxml.jackson.datatype",
"artifactId": "jackson-datatype-jdk8",
"version": "2.9.0.pr2"
},
{
"groupId": "com.fasterxml.jackson.datatype",
"artifactId": "jackson-datatype-joda",
"version": "2.9.0.pr2"
},
{
"groupId": "org.eclipse.persistence",
"artifactId": "org.eclipse.persistence.moxy",
"version": "2.6.3"
},
{
"groupId": "javax.xml.bind",
"artifactId": "jaxb-api",
"version": "2.2.12"
},
{
"groupId": "org.codehaus.groovy",
"artifactId": "groovy-all",
"version": "2.4.7"
},
{
"groupId": "joda-time",
"artifactId": "joda-time",
"version": "2.9.4"
}
]
}
}
When I run this script before attempting to execute the test class, this is the output:
sephilli$ ./node_modules/.bin/node-java-maven
resolving: org.apache.lucene:lucene-core:4.9.0
resolving parent: org.apache.lucene:lucene-parent:4.9.0
resolving parent: org.apache.lucene:lucene-solr-grandparent:4.9.0
resolving parent: org.apache:apache:13
resolving: org.apache.lucene:lucene-parent:4.9.0
resolving parent: org.apache.lucene:lucene-solr-grandparent:4.9.0
resolving parent: org.apache:apache:13
resolving: org.apache.lucene:lucene-solr-grandparent:4.9.0
resolving parent: org.apache:apache:13
resolving: org.apache:apache:13
resolving: com.google.code.findbugs:jsr305:3.0.2
resolving parent: org.sonatype.oss:oss-parent:7
resolving: org.sonatype.oss:oss-parent:7
resolving: com.google.code.findbugs:findbugs:3.0.1
resolving parent: org.sonatype.oss:oss-parent:7
resolving: com.google.code.findbugs:annotations:3.0.1
resolving parent: org.sonatype.oss:oss-parent:7
resolving: org.slf4j:slf4j-ext:1.7.12
resolving parent: org.slf4j:slf4j-parent:1.7.12
resolving: org.slf4j:slf4j-parent:1.7.12
resolving: org.slf4j:slf4j-api:1.7.12
resolving parent: org.slf4j:slf4j-parent:1.7.12
resolving: ch.qos.logback:logback-core:1.1.3
resolving parent: ch.qos.logback:logback-parent:1.1.3
resolving: ch.qos.logback:logback-parent:1.1.3
resolving: ch.qos.logback:logback-classic:1.1.3
resolving parent: ch.qos.logback:logback-parent:1.1.3
resolving: org.testng:testng:6.9.9
resolving: org.projectlombok:lombok:1.16.6
resolving: org.apache.commons:commons-lang3:3.4
resolving parent: org.apache.commons:commons-parent:37
resolving parent: org.apache:apache:16
resolving: org.apache.commons:commons-parent:37
resolving parent: org.apache:apache:16
resolving: org.apache:apache:16
resolving: org.apache.commons:commons-collections4:4.0
resolving parent: org.apache.commons:commons-parent:32
resolving parent: org.apache:apache:13
resolving: org.apache.commons:commons-parent:32
resolving parent: org.apache:apache:13
resolving: com.fasterxml.jackson.core:jackson-core:2.9.0.pr2
resolving parent: com.fasterxml.jackson:jackson-parent:2.9.pr1b
resolving parent: com.fasterxml:oss-parent:28
resolving: com.fasterxml.jackson:jackson-parent:2.9.pr1b
resolving parent: com.fasterxml:oss-parent:28
resolving: com.fasterxml:oss-parent:28
resolving: com.fasterxml.jackson.core:jackson-databind:2.9.0.pr2
resolving parent: com.fasterxml.jackson:jackson-bom:2.9.0.pr2
resolving parent: com.fasterxml.jackson:jackson-parent:2.9.pr1b
resolving parent: com.fasterxml:oss-parent:28
resolving: com.fasterxml.jackson:jackson-bom:2.9.0.pr2
resolving parent: com.fasterxml.jackson:jackson-parent:2.9.pr1b
resolving parent: com.fasterxml:oss-parent:28
resolving: com.fasterxml.jackson.core:jackson-annotations:2.9.0.pr2
resolving parent: com.fasterxml.jackson:jackson-parent:2.9.pr1b
resolving parent: com.fasterxml:oss-parent:28
resolving: com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.9.0.pr2
resolving parent: com.fasterxml.jackson.module:jackson-modules-java8:2.9.0.pr2
resolving parent: com.fasterxml.jackson:jackson-bom:2.9.0.pr2
resolving parent: com.fasterxml.jackson:jackson-parent:2.9.pr1b
resolving parent: com.fasterxml:oss-parent:28
resolving: com.fasterxml.jackson.module:jackson-modules-java8:2.9.0.pr2
resolving parent: com.fasterxml.jackson:jackson-bom:2.9.0.pr2
resolving parent: com.fasterxml.jackson:jackson-parent:2.9.pr1b
resolving parent: com.fasterxml:oss-parent:28
resolving: com.fasterxml.jackson.datatype:jackson-datatype-joda:2.9.0.pr2
resolving parent: com.fasterxml.jackson:jackson-bom:2.9.0.pr2
resolving parent: com.fasterxml.jackson:jackson-parent:2.9.pr1b
resolving parent: com.fasterxml:oss-parent:28
resolving: org.eclipse.persistence:org.eclipse.persistence.moxy:2.6.3
resolving: javax.xml.bind:jaxb-api:2.2.12
resolving parent: net.java:jvnet-parent:4
resolving: net.java:jvnet-parent:4
resolving: org.codehaus.groovy:groovy-all:2.4.7
resolving: joda-time:joda-time:2.9.4
resolving: net.jcip:jcip-annotations:1.0
resolving: com.google.code.findbugs:jsr305:2.0.1
resolving: com.google.code.findbugs:bcel-findbugs:6.0
resolving: com.google.code.findbugs:jFormatString:2.0.1
resolving: dom4j:dom4j:1.6.1
resolving: org.apache.ant:ant:1.7.1
resolving parent: org.apache.ant:ant-parent:1.7.1
resolving: org.apache.ant:ant-parent:1.7.1
resolving: org.ow2.asm:asm-debug-all:5.0.2
resolving parent: org.ow2.asm:asm-parent:5.0.2
resolving parent: org.ow2:ow2:1.3
resolving: org.ow2.asm:asm-parent:5.0.2
resolving parent: org.ow2:ow2:1.3
resolving: org.ow2:ow2:1.3
resolving: org.ow2.asm:asm-commons:5.0.2
resolving parent: org.ow2.asm:asm-parent:5.0.2
resolving parent: org.ow2:ow2:1.3
resolving: commons-lang:commons-lang:2.6
resolving parent: org.apache.commons:commons-parent:17
resolving parent: org.apache:apache:7
resolving: org.apache.commons:commons-parent:17
resolving parent: org.apache:apache:7
resolving: org.apache:apache:7
resolving: com.apple:AppleJavaExtensions:1.4
resolving: jaxen:jaxen:1.1.6
resolving parent: org.sonatype.oss:oss-parent:7
resolving: com.google.code.findbugs:jsr305:3.0.1
resolving parent: org.sonatype.oss:oss-parent:7
resolving: ch.qos.cal10n:cal10n-api:0.8.1
resolving parent: ch.qos.cal10n:cal10n-parent:0.8.1
resolving: ch.qos.cal10n:cal10n-parent:0.8.1
resolving: org.slf4j:slf4j-api:1.7.7
resolving parent: org.slf4j:slf4j-parent:1.7.7
resolving: org.slf4j:slf4j-parent:1.7.7
resolving: junit:junit:4.10
resolving: com.beust:jcommander:1.48
resolving parent: org.sonatype.oss:oss-parent:3
resolving: org.sonatype.oss:oss-parent:3
resolving: org.apache.ant:ant:1.7.0
resolving parent: org.apache.ant:ant-parent:1.7.0
resolving: org.apache.ant:ant-parent:1.7.0
resolving: com.google.inject:guice:4.0
resolving parent: com.google.inject:guice-parent:4.0
resolving parent: com.google:google:5
resolving: com.google.inject:guice-parent:4.0
resolving parent: com.google:google:5
resolving: com.google:google:5
resolving: org.yaml:snakeyaml:1.15
resolving: org.beanshell:bsh:2.0b4
resolving parent: org.beanshell:beanshell:2.0b4
resolving: org.beanshell:beanshell:2.0b4
resolving: joda-time:joda-time:2.7
resolving: org.eclipse.persistence:org.eclipse.persistence.core:2.6.3
resolving: javax.validation:validation-api:1.1.0.Final
resolving: org.glassfish:javax.json:1.0.4
resolving parent: org.glassfish:json:1.0.4
resolving parent: net.java:jvnet-parent:3
resolving: org.glassfish:json:1.0.4
resolving parent: net.java:jvnet-parent:3
resolving: net.java:jvnet-parent:3
resolving: xml-apis:xml-apis:1.0.b2
resolving: org.apache.ant:ant-launcher:1.7.1
resolving parent: org.apache.ant:ant-parent:1.7.1
resolving: org.ow2.asm:asm-tree:5.0.2
resolving parent: org.ow2.asm:asm-parent:5.0.2
resolving parent: org.ow2:ow2:1.3
resolving: xml-apis:xml-apis:1.3.02
resolving: xerces:xercesImpl:2.6.2
resolving: org.hamcrest:hamcrest-core:1.1
resolving parent: org.hamcrest:hamcrest-parent:1.1
resolving: org.hamcrest:hamcrest-parent:1.1
resolving: org.apache.ant:ant-launcher:1.7.0
resolving parent: org.apache.ant:ant-parent:1.7.0
resolving: javax.inject:javax.inject:1
resolving: aopalliance:aopalliance:1.0
resolving: com.google.guava:guava:16.0.1
resolving parent: com.google.guava:guava-parent:16.0.1
resolving parent: org.sonatype.oss:oss-parent:7
resolving: com.google.guava:guava-parent:16.0.1
resolving parent: org.sonatype.oss:oss-parent:7
resolving: org.eclipse.persistence:org.eclipse.persistence.asm:2.6.3
resolving: org.ow2.asm:asm:5.0.2
resolving parent: org.ow2.asm:asm-parent:5.0.2
resolving parent: org.ow2:ow2:1.3
resolving: jmock:jmock:1.1.0
resolving: junit:junit:4.0
resolving: org.easymock:easymock:2.2
resolving: junit:junit:3.8.1
COMPLETE
[ '/Users/sephilli/.m2/repository/org/apache/lucene/lucene-core/4.9.0/lucene-core-4.9.0.jar',
'/Users/sephilli/.m2/repository/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar',
'/Users/sephilli/.m2/repository/com/google/code/findbugs/findbugs/3.0.1/findbugs-3.0.1.jar',
'/Users/sephilli/.m2/repository/com/google/code/findbugs/annotations/3.0.1/annotations-3.0.1.jar',
'/Users/sephilli/.m2/repository/org/slf4j/slf4j-ext/1.7.12/slf4j-ext-1.7.12.jar',
'/Users/sephilli/.m2/repository/org/slf4j/slf4j-api/1.7.12/slf4j-api-1.7.12.jar',
'/Users/sephilli/.m2/repository/ch/qos/logback/logback-core/1.1.3/logback-core-1.1.3.jar',
'/Users/sephilli/.m2/repository/ch/qos/logback/logback-classic/1.1.3/logback-classic-1.1.3.jar',
'/Users/sephilli/.m2/repository/org/testng/testng/6.9.9/testng-6.9.9.jar',
'/Users/sephilli/.m2/repository/org/projectlombok/lombok/1.16.6/lombok-1.16.6.jar',
'/Users/sephilli/.m2/repository/org/apache/commons/commons-lang3/3.4/commons-lang3-3.4.jar',
'/Users/sephilli/.m2/repository/org/apache/commons/commons-collections4/4.0/commons-collections4-4.0.jar',
'/Users/sephilli/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.9.0.pr2/jackson-core-2.9.0.pr2.jar',
'/Users/sephilli/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.9.0.pr2/jackson-databind-2.9.0.pr2.jar',
'/Users/sephilli/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.9.0.pr2/jackson-annotations-2.9.0.pr2.jar',
'/Users/sephilli/.m2/repository/com/fasterxml/jackson/datatype/jackson-datatype-jdk8/2.9.0.pr2/jackson-datatype-jdk8-2.9.0.pr2.jar',
'/Users/sephilli/.m2/repository/com/fasterxml/jackson/datatype/jackson-datatype-joda/2.9.0.pr2/jackson-datatype-joda-2.9.0.pr2.jar',
'/Users/sephilli/.m2/repository/org/eclipse/persistence/org.eclipse.persistence.moxy/2.6.3/org.eclipse.persistence.moxy-2.6.3.jar',
'/Users/sephilli/.m2/repository/javax/xml/bind/jaxb-api/2.2.12/jaxb-api-2.2.12.jar',
'/Users/sephilli/.m2/repository/org/codehaus/groovy/groovy-all/2.4.7/groovy-all-2.4.7.jar',
'/Users/sephilli/.m2/repository/joda-time/joda-time/2.9.4/joda-time-2.9.4.jar',
'/Users/sephilli/.m2/repository/net/jcip/jcip-annotations/1.0/jcip-annotations-1.0.jar',
'/Users/sephilli/.m2/repository/com/google/code/findbugs/jsr305/2.0.1/jsr305-2.0.1.jar',
'/Users/sephilli/.m2/repository/com/google/code/findbugs/bcel-findbugs/6.0/bcel-findbugs-6.0.jar',
'/Users/sephilli/.m2/repository/com/google/code/findbugs/jFormatString/2.0.1/jFormatString-2.0.1.jar',
'/Users/sephilli/.m2/repository/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar',
'/Users/sephilli/.m2/repository/org/apache/ant/ant/1.7.1/ant-1.7.1.jar',
'/Users/sephilli/.m2/repository/org/ow2/asm/asm-debug-all/5.0.2/asm-debug-all-5.0.2.jar',
'/Users/sephilli/.m2/repository/org/ow2/asm/asm-commons/5.0.2/asm-commons-5.0.2.jar',
'/Users/sephilli/.m2/repository/commons-lang/commons-lang/2.6/commons-lang-2.6.jar',
'/Users/sephilli/.m2/repository/com/apple/AppleJavaExtensions/1.4/AppleJavaExtensions-1.4.jar',
'/Users/sephilli/.m2/repository/jaxen/jaxen/1.1.6/jaxen-1.1.6.jar',
'/Users/sephilli/.m2/repository/com/google/code/findbugs/jsr305/3.0.1/jsr305-3.0.1.jar',
'/Users/sephilli/.m2/repository/ch/qos/cal10n/cal10n-api/0.8.1/cal10n-api-0.8.1.jar',
'/Users/sephilli/.m2/repository/org/slf4j/slf4j-api/1.7.7/slf4j-api-1.7.7.jar',
'/Users/sephilli/.m2/repository/junit/junit/4.10/junit-4.10.jar',
'/Users/sephilli/.m2/repository/com/beust/jcommander/1.48/jcommander-1.48.jar',
'/Users/sephilli/.m2/repository/org/apache/ant/ant/1.7.0/ant-1.7.0.jar',
'/Users/sephilli/.m2/repository/com/google/inject/guice/4.0/guice-4.0.jar',
'/Users/sephilli/.m2/repository/org/yaml/snakeyaml/1.15/snakeyaml-1.15.jar',
'/Users/sephilli/.m2/repository/org/beanshell/bsh/2.0b4/bsh-2.0b4.jar',
'/Users/sephilli/.m2/repository/joda-time/joda-time/2.7/joda-time-2.7.jar',
'/Users/sephilli/.m2/repository/org/eclipse/persistence/org.eclipse.persistence.core/2.6.3/org.eclipse.persistence.core-2.6.3.jar',
'/Users/sephilli/.m2/repository/javax/validation/validation-api/1.1.0.Final/validation-api-1.1.0.Final.jar',
'/Users/sephilli/.m2/repository/org/glassfish/javax.json/1.0.4/javax.json-1.0.4.jar',
'/Users/sephilli/.m2/repository/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.jar',
'/Users/sephilli/.m2/repository/org/apache/ant/ant-launcher/1.7.1/ant-launcher-1.7.1.jar',
'/Users/sephilli/.m2/repository/org/ow2/asm/asm-tree/5.0.2/asm-tree-5.0.2.jar',
'/Users/sephilli/.m2/repository/xml-apis/xml-apis/1.3.02/xml-apis-1.3.02.jar',
'/Users/sephilli/.m2/repository/xerces/xercesImpl/2.6.2/xercesImpl-2.6.2.jar',
'/Users/sephilli/.m2/repository/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar',
'/Users/sephilli/.m2/repository/org/apache/ant/ant-launcher/1.7.0/ant-launcher-1.7.0.jar',
'/Users/sephilli/.m2/repository/javax/inject/javax.inject/1/javax.inject-1.jar',
'/Users/sephilli/.m2/repository/aopalliance/aopalliance/1.0/aopalliance-1.0.jar',
'/Users/sephilli/.m2/repository/com/google/guava/guava/16.0.1/guava-16.0.1.jar',
'/Users/sephilli/.m2/repository/org/eclipse/persistence/org.eclipse.persistence.asm/2.6.3/org.eclipse.persistence.asm-2.6.3.jar',
'/Users/sephilli/.m2/repository/org/ow2/asm/asm/5.0.2/asm-5.0.2.jar',
'/Users/sephilli/.m2/repository/jmock/jmock/1.1.0/jmock-1.1.0.jar',
'/Users/sephilli/.m2/repository/junit/junit/4.0/junit-4.0.jar',
'/Users/sephilli/.m2/repository/org/easymock/easymock/2.2/easymock-2.2.jar',
'/Users/sephilli/.m2/repository/junit/junit/3.8.1/junit-3.8.1.jar' ]