gpt4 book ai didi

java - 无法从 Java 代码调用 Perl 脚本

转载 作者:行者123 更新时间:2023-12-01 11:23:58 25 4
gpt4 key购买 nike

我在 Eclipse (tomcat8 localhost) 中使用 JAX-WS,我需要从中调用 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

最佳答案

尝试添加:

use FindBin;
use lib $FindBin::RealBin;

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

编辑:shell 脚本不起作用,因为它更改了 shell 进程的环境,而不是生成它的 Java 进程。

关于java - 无法从 Java 代码调用 Perl 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30970383/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com