失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > java exec 路径_[Java] 关于java.lang.Runtime.exec()方法运行命令所在目录的探讨。 | 学步园...

java exec 路径_[Java] 关于java.lang.Runtime.exec()方法运行命令所在目录的探讨。 | 学步园...

时间:2019-02-27 23:43:22

相关推荐

java exec 路径_[Java] 关于java.lang.Runtime.exec()方法运行命令所在目录的探讨。 | 学步园...

测试代码:

importjava.util.*;

importjava.io.*;

publicclassBadExecJavac

{

publicstaticvoidmain(Stringargs[])

{

try

{

Runtimert=Runtime.getRuntime();

Processproc=rt.exec("spant");

//intexitVal=proc.exitValue();intexitVal=proc.waitFor();

System.out.println("ProcessexitValue:"+exitVal);

}catch(Throwablet)

{

t.printStackTrace();

}}}

代码创建一个新进程,运行一个叫spant.exe(一个病毒软件)的软件,正确运行(注:spant.exe被我放置在C:\WINNT\System32\目录下)。这时候脑海中出现一个疑问,程序是如何找到spant.exe所在目录的呢?带着疑问,更改了spant.exe的路径为C:\,再次运行程序,抛出以下错误信息:

java.io.IOException: CreateProcess: spant error=2

我想应该是程序找不到需要创建的spant进程。

我认为Runtime.exec()运行程序的默认目录应该又系统默认环境变量指定,于是打开系统Path环境变量,发现:

Path = %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\j2sdk1.4.1_06\bin\;C:\Program Files\Microsoft SQL Server\80\Tools\BINN

于是,我尝试把spant.exe转移到其中一个环境变量指定的目录:C:\j2sdk1.4.1_06\bin\中,再次运行程序,spant.exe被成功调用。答案已经非常清晰。

带着程序员应该具备的严谨态度,我再做如下尝试:

为环境变量添加一个路径: C:\

然后重启cmd.exe,把spant.exe转移到C:\,再次运行程序,spant.exe再次被成功调用。

所有疑问都已经解决,得出如下结论:

结论:java.lang.Runtime.exec()方法所唤起的程序的路径由系统默认环境变量Path所指定。

如果觉得《java exec 路径_[Java] 关于java.lang.Runtime.exec()方法运行命令所在目录的探讨。 | 学步园...》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。