2013-03-07 18 views
3

我试图执行一个装载命令作为Java进程。以下是我是如何形成的命令:从Java进程运行时找不到mount.exe

List<String> command = new ArrayList<String>(); 

command.add("cmd.exe"); 
command.add("/c"); 
command.add("mount.exe"); 
command.add("-u:" + username); 
command.add("-p:" + password); 
command.add(IP + ":" + mountPoint); 
command.add(driveLetter + ":"); 

ProcessBuilder processBuilder = new ProcessBuilder(command); 

processBuilder.redirectErrorStream(true); 
Process process = processBuilder.start(); 

当我执行,我得到的是,

'mount.exe' is not recognized as an internal or external command, 
operable program or batch file. 

我MOUNT.EXE安装错误和路径在环境变量设置,

​​

当我在命令提示符下手工执行命令,它工作正常:

C:\>cmd.exe /c mount.exe -u:<user> -p:<password> <IP>:<mount point> Z: 

如果有人能指出我错过了什么,我将不胜感激。

谢谢。

回答

0

看看在command.add()调用中写入mount.exe的完整路径时会发生什么。我可能对此有错,但我认为当你自己在命令提示符中调用cmd.exe时,环境变量会自动传递给被调用的程序。这可能不会使用ProcessBuilder正确发生,并且如果完整路径有效,它可能就是一个指示。

+0

我试过了,那也没有帮助。 ''C:\ Windows \ System32 \ mount.exe'不被识别为内部或外部命令,可操作程序或批处理文件。' \t 顺便说一句,同一个程序在另一个Windows机器上工作;都有Windows Server 2008 R2。 – Yam 2013-03-07 16:36:37

1

我有运行在Windows Server x64的从TeamCity的安装卸载生成代理同样的问题(工作作为服务,运行的系统用户)。 脚本工作正常,当我点击.cmd文件从用户的会话中运行,但当TeamCity的生成代理尝试运行它,我看到了同样的错误:

'C:\Windows\System32\umount.exe' is not recognized as an internal or external command

现在我有解决方案。

安装工作当你使用C运行:\ WINDOWS \ SYSTEM32 \ cmd.exe的,因为CMD搜索在C接口:\ WINDOWS \ SYSTEM32 \

安装失败当你使用C运行:\ WINDOWS \ Syswow64资料\ cmd.exe的,因为这CMD搜索在C接口:\ WINDOWS \ Syswow64资料\