Runtime.getRuntime.exec()使用

Runtime.getRuntime.exec()使用

我在一个项目中需要使用java调用python代码,我就想到了用java调用命令行执行,这里就是在执行过程中的一些见解。

方法:

exec(String [] cmdarry) 在单独的进程中执行指定的命令和参数
exec(String[] cmdarray,String[] envp) 在指定环境变量的单独进程中执行指定的命令和参数
exec(String[] cmdarray,String[] envp,File dir) 在指定环境变量和工作目录的单独进程中执行指定的命令和参数
exec(String command) (方法已经被弃用了)
exec(String command, String[] envp) (方法已经被弃用了)
exec(String command, String[] envp,File dir) (方法已经被弃用了)

参数说明:

  1. cmdarray : 字符串数组类型,每一个字符串元素代表着一个带有参数的命令。
  2. envp : 字符串数组类型,每一个字符串是是 name=value 的环境变量设置,如果子进程继承当前进程的环境,就设置为null
  3. File dir: 子进程的工作目录,如果子进程继承当前进程的工作目录,设置为null.

使用例子

直接执行就相当于在win+R之后输入相应的指令,比如执行打开笔记本。

Runtime.getRuntime().exec(new String[]{"notepad.exe"});

注意执行exec()里面的cmdarray和直接在cmd中执行命令是不同的,要在windows下调用程序系统命令(分为执行一条命令和执行两条命令情况)

Runtime.getRuntime().exec(new String[]{"cmd","/c",cmds});

比如在cmd中进入conda环境(执行一条命令)

Runtime.getRuntime().exec(new String[]{"cmd","/c","conda activate autodl"});

在进入conda命令之后执行python run.py(这里就是因为我的项目需要在autodl中的conda环境中执行。)

Runtime.getRuntime().exec(new String[]{"cmd","/c","conda activate autodl && python run.py"});

如果需要有工作目录,就要用如下的代码,因为我的python程序是需要在“C:\Users\zxb\Desktop\X-VLM-master”目录下运行。

Runtime.getRuntime().exec(new String[]{"cmd","/c","conda activate autodl && python run.py"},null,new File ("C:\\Users\\zxb\\Desktop\\X-VLM-master"));

注意:

方法具体是如何使用的我还不是很清楚,以后真正弄懂了再来补充。

参考

官方文档

你可能感兴趣的:(java,java)