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) | (方法已经被弃用了) |
参数说明:
-
cmdarray
: 字符串数组类型,每一个字符串元素代表着一个带有参数的命令。 -
envp
: 字符串数组类型,每一个字符串是是
name=value
的环境变量设置,如果子进程继承当前进程的环境,就设置为null -
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 版权协议,转载请附上原文出处链接和本声明。