当我尝试从我的主java应用程序运行perl脚本时:
try {
ProcessBuilder pb = new ProcessBuilder(path+"\\script.pl");
Process p = pb.start(); // Start the process.
p.waitFor(); // Wait for the process to finish.
System.out.println("Script executed successfully");
} catch (Exception e) {
e.printStackTrace();
}
}
我收到以下错误(不是有效的win32应用):
java.io.IOException:无法运行程序“C:\ workspace \ kepler \ Alert_Handler \ target \ test-classes \ script.pl”:CreateProcess error = 193,%1 no esunaaplicaciónWin32válida 在java.lang.ProcessBuilder.start(未知来源)
答案 0 :(得分:1)
Unix使用shebang行表示文件是可执行的,但Windows使用基于文件扩展名的不同机制。 Windows认为可执行文件扩展名是PATHEXT
环境变量枚举的文件扩展名。您可以通过将PATHEXT
变量更改为详细here来解决您的计划。
或者,您可以使用perl
明确指定要启动脚本。
new ProcessBuilder("perl.exe", path+"\\script.pl");
- ikegami
答案 1 :(得分:0)
好的 - 我的母语不是西班牙语,但是这个
no es una aplicación Win32 válida
似乎要翻译成"这不是一个有效的Win32应用程序"所以在Windows下你似乎必须以脚本作为arg启动Perl解释器。类似的东西:
new ProcessBuilder("perl.exe",path+"\\script.pl");
可能是?