gpt4 book ai didi

java - 使用 node-jre 模块执行 java 项目

转载 作者:行者123 更新时间:2023-11-30 10:27:47 25 4
gpt4 key购买 nike

我正在开发一个需要执行 java 代码的 node.js 应用程序。

我正在使用 de node-jre 模块 ( https://www.npmjs.com/package/node-jre )。

此 Web 中的示例 (Hello.class) 使用此代码正确运行,并通过控制台使用 javac Hello.java 编译 de Hello 类:

    var output = jre.spawnSync(  // call synchronously 
['java'], // add the relative directory 'java' to the class-path
'Hello', // call main routine in class 'Hello'
['World'], // pass 'World' as only parameter
{ encoding: 'utf8' } // encode output as string
).stdout.trim();

问题是当我尝试执行我的 java 项目(使用 eclipse 开发)时。文档说在此目录中的“java”中搜索 jar 文件。所以,这是我尝试的第一件事:将项目导出到 jar,但它不起作用。

那么,我如何执行一个完整的项目(只有一个主类)?我认为重要的是要说项目使用外部库。

jar 中的 META-INF/MANIFEST.MF 如下所示:

Manifest-Version: 1.0
Class-Path: .
Main-Class: com.packagename.example1.ClassName

Name: org/apache/oro
Specification-Title: Jakarta ORO
Implementation-Title: org.apache.oro
Implementation-Version: 2.0.8 2003-12-28 11:00:13
Specification-Version: 2.0.8
Specification-Vendor: Apache Software Foundation
Implementation-Vendor: Apache Software Foundation

所以,我的代码是:

 var output = jre.spawnSync(  // call synchronously 
['java'], // add the relative directory 'java' to the class-path
'ClassName', // call main routine in class 'Hello'
['World'], // pass 'World' as only parameter
{ encoding: 'utf8' } // encode output as string
).stdout.trim();

我也尝试过:

 var output = jre.spawnSync(  // call synchronously 
['java'], // add the relative directory 'java' to the class-path
'com.packagename.example1.ClassName', // call main routine in class 'Hello'
['World'], // pass 'World' as only parameter
{ encoding: 'utf8' } // encode output as string
).stdout.trim();

'java' 是我在 Node 中与 server.js

处于同一级别的文件夹

最佳答案

问题是我只是把 .jar 文件所在的目录放在正确的方法是把完整的路径放到 jar 文件:java/Nameofjarfile.jar

 var output = jre.spawnSync(  // call synchronously 
['java/Nameofjarfile.jar'], // add the relative directory 'java' to the class-path
'com.packagename.example1.ClassName', // call main routine in class 'Hello'
['World'], // pass 'World' as only parameter
{ encoding: 'utf8' } // encode output as string
).stdout.trim();

关于java - 使用 node-jre 模块执行 java 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45101590/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com