java - 如何从 Perl 调用 Java 程序?

标签 java perl

我是 Perl 新手,我正在尝试做一些事情,但找不到答案。

我创建了一个 Java 项目,其中包含一个获取多个输入参数的主类。

我想用 Perl 包装我的 Java:我想创建一个 Perl 脚本来获取输入参数,然后将它们传递给 Java 程序并运行它。

例如:

如果我的 main 名为 mymain,我这样调用它:mymain 3 4 hi (3, 4hi 是输入参数),我想创建一个名为 myperl 的 Perl 程序,当它作为 myperl 3 4 hi 调用时> 将参数传递给 Java 程序并运行它。

我怎样才能做到这一点?

最佳答案

运行 Java 程序就像运行任何其他外部程序一样。

您的问题有两个部分:

  1. 如何将参数从 Perl 获取到 Java 程序?
  2. 如何在 Perl 中运行该程序?

对于(1)你可以做类似的事情

my $javaArgs = " -cp /path/to/classpath -Xmx256";
my $className = myJavaMainClass;
my $javaCmd = "java ". $javaArgs ." " . $className . " " . join(' ', @ARGV);

注意 join() 函数 - 它将把所有参数放入 Perl 程序中,并用空格分隔它们。

对于(2),您可以遵循@AurA的回答。

  • 使用system()函数

    my $ret = system("$javaCmd");
    

这不会捕获(即放入变量 $ret)命令的输出,而只是返回代码,如 0 表示成功。

  • 使用反引号

    my $out = `$javaCmd`;
    

这将用 Java 程序的整个输出填充 $out(您可能不希望这样)。

  • 使用管道

    open(FILE, "-|", "$javaCmd");
    my @out = <FILE>
    

这更复杂,但允许对输出进行更多操作。

有关这方面的更多信息,请参阅 perldoc -f open .

关于java - 如何从 Perl 调用 Java 程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10631348/

相关文章:

java - 使用 Docker Image 的 MAVEN 项目的 Gitlab CI

java - log4j 是否使用 NIO 将数据写入文件?

java - 编译器错误找不到符号 - Java

git - 需要安装 Perl 和 Linux

java - 资源 $NotFoundException : Resource ID #0x7f040015

java - Android Arduino 蓝牙通信启动时崩溃

Perl select 函数无限期挂起

perl - 如果语句不会在 perl 中捕获字符串

javascript - 具有 href 和 onclick 以及 AJAX 请求的 HTML 标记 <a>

multithreading - 如何中断 perl 线程中的 I/O 调用?