运行时使用快速框架和node.js的java.lang.NoClassDefFoundError

时间:2014-08-11 11:41:11

标签: node.js noclassdeffounderror node-java

我正在尝试编写示例代码来创建java类的实例,然后使用该实例调用方法。我正在使用node-java模块来执行此操作。代码编译没有任何错误。但是,当我点击实际命中相同代码的URL时,我得到了类未找到的异常。

我已经验证了jar和它在index.js所在的目录中,并且jar还包含正在为其创建实例的类文件(Application.class)。

我的index.js文件

var java = require("java");
java.classpath.push("demo.jar");

var express = require('express');
var router = express.Router();
var Application = java.import('Application');

/* GET home page. */
router.get('/', function(req, res) {
var application = new Application();
var resp = application.getResponse();
res.render('index', { title: resp });
});

module.exports = router;

1 个答案:

答案 0 :(得分:1)

抱歉我的英文。我有同样的问题。看[https://github.com/joeferner/node-java/issues/147] 我的代码:

`var java = require("java");
 var path=require("path");
 var fs=require("fs");
 console.log("ruta in directory",path.join(__dirname));
 console.log("exist file:",fs.existsSync(path.resolve(__dirname,"./lib-java/lib-tgd.jar")));
 java.classpath.push("commons-lang3-3.1.jar");
 java.classpath.push("commons-io.jar");
 java.classpath.push(path.resolve(__dirname,"./lib-java/lib-tgd.jar"));
 java.classpath.push(path.resolve(__dirname,"./lib-java/jackson-annotations- 2.5.1.jar"));
 java.classpath.push(path.resolve(__dirname,"./lib-java/jackson-core-2.5.1.jar"));
 java.classpath.push(path.resolve(__dirname,"./lib-java/jackson-databind-2.5.1.jar"));`
使用path.resolve

解决了文件路径的问题