1.前言
使用命令行来编译和运行java比较少见,尤其是在现在各种可视化工具横行的时代下。本文主要讲述如何在node.js中编译和运行java以及注意点
2.nodejs中如何运行java程序
(1) window的操作以及注意点。
首先我们使用node中的子进程来运行java文件,
const spawn = require('child_process').spawn
const java = spawn('javac', ['--add-exports', 'java.base/**=All-UNNAME', '-cp', 'D:/jarLib/*;.;','-encoding', 'UTF-8','com/test.java'])
window下安装jdk和jre这里不赘述。对于上述spawn中第二个参数也就是数组内的参数做一下简单的说明, -cp: 指定classpath,D:/jarlib/*;表示会从D:/jarlib文件夹中查找所需要的jar包,.;表示会从根目录查找其他依赖的java文件,一般都需要带上.;。 -encoding:指定编译使用的字符编码,避免以为中文乱码导致编译失败。 –add-exports:有一些情况是一些库已经整合到其他jar包中了,但是他并没有暴露出接口,所以需要将其暴露出来。 在编译完成后,会生成class文件,这时候通过以下方式运行即可:
const java = spawn('java', ['--add-exports', 'java.base/**=All-UNNAME', '-cp', 'D:/jarLib/*;.;','com/test',args1.args2...])
这里需要注意第二个参数后可以带任意个参数,可以在java中通过args获取到,用于定制化需求,需要注意类名一般为com/test,com.test(不带后缀)。
(2) linux的操作以及注意点。
linux下使用node运行java程序大同小异,需要注意几个点:
首先需要在linux下安装jdk环境,我们在官网下载linux使用的安装包,将其cp到目录比如(./soft/jdk)然后运行./soft/java -version 查看是否成功,如果成功可以进行后续操作。
首先是编译java程序
const spawn = require('child_process').spawn
const java = spawn('./soft/jdk/javac', ['-classpath', './jarLib/*:.:','-encoding', 'UTF-8','com/test.java'])
这里需要注意的点是,window下的;(分隔符)其实对应着linux下的:,linux下指定classpath使用的是-classpath参数。
最后运行java程序
const java = spawn('./soft/jdk/java', ['-classpath', './jarLib/*:.:','com/test',args1.args2...])
|