Runtime.getRuntime (). Exec () проблема с Windows NFS в Java

У меня установлен NFS для Windows 2008, но когда я пытаюсь получить доступ к C: /Windows/System32/mount.exe или umount.exe и выполнить его на Java, я получаю исключение ввода-вывода, что файл не может быть найден.

Runtime.getRuntime().exec("C:/Windows/System32/mount.exe <location> J:");

Это также не сработает, если вы думали, что это может:

Runtime.getRuntime().exec("cmd.exe /C call C:/Windows/System32/mount.exe <location> J:");

Файл даже не регистрируется как существующий через Java.

if(new File("C:/Windows/System32/mount.exe").exists())
    System.exit(0);
else
    System.exit(-1);

Этот код всегда будет выходить из -1

Я снова и снова проверял, что файл действительно существует и моя команда работает. Что здесь происходит? Как смонтировать диск NFS через Java для Windows?

java.io.IOException: Cannot run program "C:/Windows/System32/mount.exe": CreateProcess error=2, The system cannot find the file specified
at java.lang.ProcessBuilder.start(Unknown Source)
at Data.SystemExecutor.exec(SystemExecutor.java:46)
at Data.SystemExecutor.exec(SystemExecutor.java:18)
at Mount.Mount.setMount(Mount.java:40)
at Mount.Mount.<init>(Mount.java:30)
at Main.Main.main(Main.java:94)
Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.<init>(Unknown Source)
at java.lang.ProcessImpl.start(Unknown Source)
... 6 more

Я тоже пробовал запускать CMD от имени администратора


person BinaryShrub    schedule 05.04.2012    source источник
comment
Это похоже на проблему с разрядностью (т. Е. При использовании 32-разрядной версии Java с установленной 64-разрядной версией SUA). C:\Windows\System32 перенаправляется для 32-разрядных приложений на C:\Windows\SYSWOW64. См. этот вопрос   -  person ig0774    schedule 05.04.2012
comment
@ user1314180: Готово. Я думал об этом, потому что не так давно сам имел дело с похожей проблемой.   -  person ig0774    schedule 05.04.2012


Ответы (2)


Это похоже на проблему с разрядностью (т. Е. При использовании 32-разрядной версии Java с установленной 64-разрядной версией SUA). C:\Windows\System32 перенаправляется для 32-разрядных приложений на C:\Windows\SYSWOW64. См. Этот вопрос.

person ig0774    schedule 05.04.2012
comment
Спасибо за вашу помощь. Теперь я всегда буду помнить об этом. - person BinaryShrub; 05.04.2012

попробуйте создать файл .bat, который запускает "java yourClass" и запускается от имени администратора. Может быть настройки разрешений в windows.

person pancatrevisan    schedule 05.04.2012