无法从Java代码调用Perl脚本

时间:2015-06-21 23:37:46

标签: java eclipse perl path

我在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

1 个答案:

答案 0 :(得分:2)

尝试添加:

use FindBin;
use lib $FindBin::RealBin;

这会将脚本所在的目录添加到库搜索路径中。

编辑:shell脚本无法正常工作,因为它更改了shell进程的环境,而不是生成它的Java进程。