对于我的 A2 计算类(class)作业,我需要从 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");
}
}
运行完美..
有没有一种特定的方法来处理这个错误,因为我的代码似乎是“正确的”,但这个错误似乎一直困扰着我。 非常感谢任何帮助,谢谢。
最佳答案
如果你想从你的 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);
}
}
关于java - 文件打开问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24218077/