Runtime.getRuntime.exec()使用

  • Post author:
  • Post category:其他




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"));



注意:

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



参考


官方文档



版权声明:本文为qq_44878786原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。