我在Eclipse中使用JAX-WS(tomcat8 localhost),我需要从中调用Perl脚本。使用下面的代码,我能够到达Match.pl的前三行。但是,当它达到use Stats;
时,该过程将返回exitvalue 2.
Stats.pm文件与Match.pl位于同一目录中,该目录已使用hello.sh脚本导出到PERL5LIB。
我做错了什么?有没有办法使用相对路径而不是绝对路径?
@Path("/")
public class MyService {
@POST
@Path("/generatePath")
@Produces(MediaType.TEXT_PLAIN)
public Response generatePathService(
@FormParam("url") String fileURL) throws IOException, InterruptedException {
Process p0 = Runtime.getRuntime().exec("sh /home/me/workspace/MyService/hello.sh");
p0.waitFor();
Process p = Runtime.getRuntime().exec("perl /home/me/workspace/MyService/Match.pl");
p.waitFor();
return Response.status(200).entity(fileURL).build();
}
}
Match.pl
#!/usr/bin/perl
use strict;
use warnings;
use Getopt::Long;
use Stats;
Stats.pm
#!/usr/bin/perl
package Stats;
use strict;
use warnings;
hello.sh
#!/bin/bash
export PERL5LIB=/home/me/workspace/MyService
答案 0 :(得分:2)
尝试添加:
use FindBin;
use lib $FindBin::RealBin;
这会将脚本所在的目录添加到库搜索路径中。
编辑:shell脚本无法正常工作,因为它更改了shell进程的环境,而不是生成它的Java进程。