我试图从程序所在的同一个包中运行一个exe文件
Process p = Runtime.getRuntime().exec("prog.exe");
和
Desktop.getDesktop().open(new File("prog.exe"));
但他们都给我错误。我确定名称中没有拼写错误,它仍然给我一个错误。是否有另一种方法可以做到这一点,而无需使用整个目录?
答案 0 :(得分:0)
您需要将它从可能在jar中的资源复制到绝对路径。还要确保路径正确。如果prog.exe与包pkg中的类位于同一目录中,则需要将pkg/
添加到资源名称。
File tmpCopy = File.createTempFile("prog", ".exe");
Files.copy(ClassLoader.getSystemResourceAsStream("pkg/prog.exe"), tmpCopy.toPath(), StandardCopyOption.REPLACE_EXISTING);
// Needed on Linux/Mac only ---Files.setPosixFilePermissions(tmpCopy.toPath(), PosixFilePermissions.fromString("rwxrwxrwx"));
Process p = new ProcessBuilder(tmpCopy.getAbsolutePath()).inheritIO().start();
p.waitFor();