为了账号安全,请及时绑定邮箱和手机立即绑定

如果使用exec()将外部应用程序定义为Java中的无效Win32应用程序,如何调用该应用程序?

如果使用exec()将外部应用程序定义为Java中的无效Win32应用程序,如何调用该应用程序?

慕仙森 2021-04-27 17:50:51
我不喜欢从Java源代码打开外部应用程序。我正在尝试打开一个名为Runescape的游戏的启动器,该游戏位于内C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Jagex。该目录中文件的名称为RuneScape Launcher.url。这是代码,展示了我到目前为止的进展:public static void main(String[] args) throws IOException, InterruptedException {    //doesn't work    Process p = Runtime.getRuntime().exec("C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\Jagex\\RuneScape Launcher.url");   //if Chrome was to be opened, it works, since it is .exe   // Process p = Runtime.getRuntime().exec("C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe");  p.waitFor();  System.out.println(p.exitValue());}引发的错误是:Exception in thread "main" java.io.IOException: Cannot run program "C:\ProgramData\Microsoft\Windows\Start": CreateProcess error=193, %1 is not a valid Win32 applicationat java.lang.ProcessBuilder.start(Unknown Source)at java.lang.Runtime.exec(Unknown Source)at java.lang.Runtime.exec(Unknown Source)at java.lang.Runtime.exec(Unknown Source)at Main.main(Main.java:47)Caused by: java.io.IOException: CreateProcess error=193, %1 is not a valid Win32 applicationat java.lang.ProcessImpl.create(Native Method)at java.lang.ProcessImpl.<init>(Unknown Source)at java.lang.ProcessImpl.start(Unknown Source)... 5 more显然,RuneScape Launcher.url这不是有效的Win32应用程序。如何启动这样的应用程序?我的研究: -这篇文章建议使用ShellExecute,但是它是用另一种编程语言编写的。我找不到类似的Java解决方案。-这篇文章讨论了在调用外部应用程序时传递参数,但该外部应用程序是.exe-此页面演示了如何调用外部应用程序,但仅是.exe然后,我尝试从cmd手动启动此启动器...成功。首先,我找到了启动器目录:cd C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Jagex,然后称为启动器:"RuneScape Launcher.url"。这样可以正确启动启动器。为什么不从Java代码开始?
查看完整描述

1 回答

?
慕运维8079593

TA贡献1876条经验 获得超5个赞

尝试将启动器作为参数传递给cmd.exe

    Process p = Runtime.getRuntime().exec("cmd.exe", "/c", "C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\Jagex\\RuneScape Launcher.url");



查看完整回答
反对 回复 2021-05-19
  • 1 回答
  • 0 关注
  • 205 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信