【问题标题】:mount.exe not found when run from a Java Process从 Java 进程运行时找不到 mount.exe
【发布时间】:2013-02-22 22:32:50
【问题描述】:

我正在尝试将挂载命令作为 Java 进程执行。以下是我如何形成命令:

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:\>where mount.exe
C:\Windows\System32\mount.exe

C:\>path
PATH=C:\Windows\System32;C:\Windows; ... [removed the remaining entries]

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

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

如果有人能指出我所缺少的,我将不胜感激。

谢谢。

【问题讨论】:

    标签: java windows mount


    【解决方案1】:

    我在 Windows Server 2008 x64 上从 TeamCity Build Agent 运行 mountunmount 时遇到同样的问题(作为服务工作,运行作为系统用户)。 当我通过单击 .cmd 文件从用户会话运行脚本时,脚本工作正常,但是当 TeamCity Build Agent 尝试运行它时,我看到了同样的错误:

    'C:\Windows\System32\umount.exe' 未被识别为内部或外部命令

    现在我有了解决方案。

    mount 工作 当你用 C:\Windows\System32\cmd.exe 运行它时,因为 cmd 搜索 mount 在 C:\Windows\System32\

    mount fails 当你用 c:\Windows\SysWOW64\cmd.exe 运行它时,因为这个 cmd 搜索 挂载 在 c:\Windows\SysWOW64\

    【讨论】:

      【解决方案2】:

      看看当你在你的 command.add() 调用中写入 mount.exe 的完整路径时会发生什么。我可能对此有误,但我认为当您自己从命令提示符中调用 cmd.exe 时,环境变量会自动传递给被调用的程序。使用 ProcessBuilder 可能无法正确发生这种情况,如果完整路径有效,则可能表明这一点。

      【讨论】:

      • 我试过了,也没有用。 'C:\Windows\System32\mount.exe' is not recognized as an internal or external command, operable program or batch file. BTW,同样的程序在另一台windows机器上运行;两者都有 Windows Server 2008 R2。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-26
      • 2010-09-24
      • 2021-07-01
      相关资源
      最近更新 更多