首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用J2V8嵌入java项目中的node.js应用程序-解析node.js中的相对路径

使用J2V8嵌入java项目中的node.js应用程序-解析node.js中的相对路径
EN

Stack Overflow用户
提问于 2016-08-29 23:24:44
回答 1查看 1.4K关注 0票数 1

从另一个基于Node.js的应用程序(2)使用J2V8在JVM上运行JVM应用程序(1)时出现问题。应用程序(%1)的启动脚本联机失败

代码语言:javascript
复制
fs.readFileSync('./lib/someFile.json') 

因为J2V8提供了指向应用程序(2)根目录的'.'路径,但我需要'.'作为指向应用程序(1)根目录的路径。

我如何处理只在项目(2)中进行更改的问题?

更新:添加了启动node.js应用程序的Java代码。

代码语言:javascript
复制
public static void main(String[] args) {
        final NodeJS nodeJS = NodeJS.createNodeJS();
        File nodeScript = new File("/media/Projects/Test/start.js");
        nodeJS.exec(nodeScript);
        while(nodeJS.isRunning()) {
            nodeJS.handleMessage();
        }
        nodeJS.release();
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-29 23:31:30

可以使用__dirname将路径设置为Node脚本所在的目录。

例如:

代码语言:javascript
复制
fs.readFileSync(__dirname + '/lib/someFile.json');

也许能满足你的需要。

或者使用path.join

代码语言:javascript
复制
var path = require('path');
fs.readFileSync(path.join(__dirname, 'lib', 'someFile.json');

使用path.join,您可以执行以下操作:

代码语言:javascript
复制
console.log(path.join(__dirname, '..', 'lib', 'someFile.json'));

另外,由于有了path.join,你不必考虑不同操作系统上的路径分隔符(比如Unix/Linux上的/和Windows上的\ )。

如果只对Java项目进行更改,则必须使用不同的工作目录运行Node应用程序。这取决于您如何运行它,但您应该做的是将目录更改为您希望在运行Node应用程序之前让'.'指向的目录。您没有提供从Java应用程序实际运行Node应用程序的代码示例,所以很难再多说一些。

更新

您似乎正在使用J2V8。在GitHub上有一个与您正在尝试做的事情相关的公开问题:Issue #185: Set the working directory

在从Java启动Node程序之前,您可以尝试更改工作目录-使用与chdir系统调用等效的Java语言。

或者,您可以将您的Node程序复制到您的Java项目中,这样它们的'.'目录就是相同的,这样您就可以用以下命令调用它:

代码语言:javascript
复制
File nodeScript = new File("./start.js");

当您可以将start.js作为./start.js调用时,Node中的'.'应该是start.js文件所在的目录。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39209824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档