以下行可以在我的Windows XP上的Java应用程序中正常工作:
Process p = Runtime.getRuntime().exec("msg.exe * this is a test");
在Windows 7(64位)上执行时,出现以下错误:
无法运行程序“msg.exe”:CreateProcess error = 2,系统找不到指定的文件
我试过放入.exe的完整路径,我得到同样的错误:
Process p = Runtime.getRuntime().exec("c:\\Windows\\System32\\msg.exe * this is a test");
使用ProcessBuilder而不是Runtime会产生同样的错误:
Process p = new ProcessBuilder("msg.exe * this is a test").start();
我试图通过暂时让所有人完全控制msg.exe来排除权限问题,但Windows不会让我 - 即使我以管理员身份登录,选项也会显示为灰色。
所以我确认java进程的用户具有对msg.exe的读取和执行权限。
我能够从Windows 7计算机的命令行成功运行该命令(作为java进程的同一用户)。
在这篇文章的注释中:C# cannot find file specified,有人提到类似的问题,Windows 64位机器没有从C#程序中找到msg.exe,所以Windows配置方面可能还有一些东西我需要去做?
有没有办法让Java应用程序在Windows 7上发送网络消息?或者一些替代方法,用于发送有效的网络消息?
答案 0 :(得分:1)
您可能安装了32位Java,但不允许在Windows 7上启动64位程序。如果安装了32位Java,请升级到64位Java,然后重试。 / p>
答案 1 :(得分:0)
请尝试:new ProcessBuilder("msg.exe", "* test").start()