对于我的A2计算课程,我需要打开并使用来自Java程序的媒体播放器或itunes。我当前的代码是这样的: -
package random.file.opener;
import java.io.IOException;
public class RandomFileOpener {
public static void main(String args[]) throws IOException {
Runtime.getRuntime().exec("C:\\Program Files (x86)\\Internet Explorer\\iexplore.exe");
//this is to try to run internet explorer as a proof of concept
}
}
然而,这会引发此错误: -
Exception in thread "main" java.io.IOException: Cannot run program "iexplore.exe" (in directory "C:\Users\Program Files (x86)\Internet Explorer\iexplore.exe"): CreateProcess error=267, The directory name is invalid
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1041)
at random.file.opener.RandomFileOpener.main(RandomFileOpener.java:19) Caused by: java.io.IOException: CreateProcess error=267, The directory name is invalid
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.<init>(ProcessImpl.java:376)
at java.lang.ProcessImpl.start(ProcessImpl.java:136)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1022)
... 1 more
Java结果:1
编辑:但是,我能够运行
package random.file.opener;
import java.io.IOException;
public class RandomFileOpener {
public static void main(String args[]) throws IOException {
Runtime.getRuntime().exec("C:\\Windows\\System32\\taskmgr.exe");
}
}
哪个运行得很完美..
是否有一种特定的方法来处理此错误,因为我的代码似乎是“正确的”但这个错误似乎一直在困扰我。 非常感谢任何帮助,谢谢。
答案 0 :(得分:1)
如果你想从你的java应用程序启动一些可执行文件,那么建议你使用ProccessBuilder,在那里你可以避免路径中有空格的问题,检查这个answer它可能有帮助你在使用ProccessBuilder时。
当您必须从Java程序打开文件,浏览器或任何GUI应用程序时,您可以使用调用操作系统中默认应用程序的Desktop类来打开特定文件,例如:
import java.awt.Desktop;
import java.io.File;
public class MyClass {
public static void main(String[] args) throws IOException {
File file = new File("myFile.txt");
Desktop desktop = Desktop.getDesktop();
if(file.exists()) desktop.open(file);
}
}
答案 1 :(得分:0)
我使用了与你相同的代码。复制它并在这里创建了一个类。对我的iexplorer.exe
的路径做了一些修改但在我的结尾它运行得很好。
我想你的iexplorer.exe路径存在一些问题。
请确保您将iexplorer.exe置于代码中提及的相同路径中。
答案 2 :(得分:0)
如果我测试你的代码,它似乎工作
也许您可以尝试运行64位IE,只需删除(x86)
即可Runtime.getRuntime().exec("C:\\Program Files\\Internet Explorer\\iexplore.exe");
但我建议您导航到“程序文件夹”并搜索Internet Explorer,然后复制路径