如何在PHP中从JAR捕获返回值并显示它

时间:2017-12-03 07:20:10

标签: php jar parameter-passing return-value shell-exec

我有以下JAVA程序,它已转换为JAR文件并放在与我的PHP文件相同的目录中。 所以基本上它需要PHP传递的参数并显示它

public class Test {
    public static void main(String[] args) throws Exception {
        //Takes the value passed from the PHP
        String Name = (new String(args[0])).toString(); 
        //This will be treated as Output Parameter which will be returned to PHP
        System.out.println("Return to PHP"); 

    }
}

下面是我的PHP代码,它将执行JAR文件并将所需的1参数传递给JAR。

<?php

$arg1 = "My_INPUT_PARAMETER";

shell_exec("java -jar TEST.jar $arg1");
echo "Done";

?>

我在某处读到,将Sysout(System.out.println)中放置的内容视为输出参数或返回值为PHP。 所以在我的例子中它将是String“返回PHP”。

但是我无法获得PHP的值并显示它。

我尝试在exec语句中放置一个输出值,但它不起作用。 我尝试了下面的代码,但它给我带来了错误。

<?php

$arg1 = "My_INPUT_PARAMETER";
$output = '';

shell_exec("java -jar TEST.jar $arg1", $output);
echo "Done";
echo $output;

?>

任何人都可以在这里帮助我,我如何从PHP获取返回值或从PHP输出参数并显示它或在我的PHP中使用它并继续执行其他执行部分。

1 个答案:

答案 0 :(得分:0)

感谢@Roland Starke。

基本上我们可以使用2个语句从PHP运行JAR文件: EXEC和SHELL_EXEC。

EXEC将保存JAR文件中的所有返回值,我们可以将其用作数组并显示所需的输出参数。

SHELL_EXEC将保存所有输出参数,它将一次显示所有参数。

<?php

$arg1 = "Multi Return";

exec("java -jar TEST.jar $arg1",$output);

echo $output[0]."<br/>";

echo $output[1];

echo "-------------------------------";

$shell_out = shell_exec("java -jar TEST.jar $arg1");

echo $shell_out;

?>