无法从Java调用perl脚本

时间:2014-11-11 19:48:47

标签: java perl

当我尝试从我的主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(未知来源)

2 个答案:

答案 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");

可能是?