我想用这个Windows命令在我的Java程序中设置一个路径(这个路径包含一些DLL文件,在我的程序的一个本机外设中使用):
c:\>path=%path%;"C:\Users\NetBeansProjects\IPTV1.7\3rd_party"但是,当程序运行时,这会导致异常:
"path=%path%;C:\Users\NetBeansProjects\IPTV1.7\3rd_party\":java.io.IOException:无法运行程序CreateProcess error=2,系统找不到指定的文件
我不知道为什么我可以在命令提示符中没有问题的情况下设置路径,但是在代码中抛出异常。
String path = "C:\\Users\\NetBeansProjects\\IPTV1.7\\3rd_party\\";
Runtime rt = Runtime.getRuntime();
Process p = rt.exec("path=%path%;"+ path);发布于 2011-03-01 17:58:05
你的命令
path=%path%;"C:\Users\NetBeansProjects\IPTV1.7\3rd_party"不是一个“真实”的windows命令,而是一个变量赋值,由您的shell (cmd.exe)解释,只能在同一个shell会话中看到,并且从那里开始的任何命令(其他程序)都是可见的。
当试图使用Runtime.exec()从Java执行此操作时,windows CreateProcess函数尝试找到一个具有此奇怪名称的可执行文件,该文件显然不存在(我认为不能存在),并且您将得到此错误。
即使您可以通过调用cmd.exe来执行这个过程,它也只会影响相同的cmd.exe进程(任何程序都是从那里启动的,而不是您自己的cmd.exe进程(程序从这里开始)。
根据实际需要,您可以这样做,例如:
exec中查找命令,请自己搜索可执行文件发布于 2011-03-01 14:21:47
当您在命令提示符上键入此命令时,cmd程序将处理它并为您更改PATH变量。当您用Runtime尝试时,没有创建cmd进程,硬盘上也没有命令"path=%path%;C:\Users\NetBeansProjects\IPTV1.7\3rd_party\“(Windows实际上试图找到一个具有这个确切名称的程序)。
将命令放入.BAT或.CMD文件中。Windows会自动创建一个cmd进程来为您执行它们。
发布于 2011-03-01 14:24:50
您可以在java中使用ProcessBuilder生成一个进程并控制它所获得的环境。因此,您可以使用ProcessBuilder环境方法来设置PATH环境变量,然后设置相关的命令行,然后启动。就像(未试过的):
ProcessBuilder b = new ProcessBuilder();
b.environment().put("PATH", whatever);
b.command(whatever);
Process p = b.start();https://stackoverflow.com/questions/5155697
复制相似问题