如何使用php'exec'运行带有输入参数的.jar

时间:2012-08-12 12:36:50

标签: java php jar command-line-arguments

我有一个运行'.jar'文件的php文件。代码如下:

exec("java -Xmx1g -jar \"C:\Users\Roxy\Documents\NetBeansProjects\Entity Extraction\dist\Entity Extraction.jar",$output);  

这没有任何错误正常工作 但是现在我需要将一个数组(比如说 $ testArray )传递给'Entity Extraction.jar'文件并在我的main方法中用java代码访问它。

有人可以告诉我怎么做吗?

更新

在我的php文件中,我有

$testArr[0] = 'test1';
$testArr[1] = 'test2'; 

$str = "java -Xmx1g -jar \"C:\Users\Roxy\Documents\NetBeansProjects\Entity Extraction\dist\Entity Extraction.jar ";

foreach($testArr as $param){
 $str.=$param.' ';
}

exec($str,$output);
print_r($output);

在我的java Main Class中,我有

public static void main(String[] args) {
     int length = args.length;
     for (int i = 0; i < length; i++) {
          System.out.println(args[i]);
     }
}

2 个答案:

答案 0 :(得分:1)

在命令行中运行jar时,在Extraction.jar之后放置的每个参数都会自动进入args数组。

所以你需要在数组上运行并构建你想传递的字符串:

 $str = "java -Xmx1g -jar \"C:\Users\Roxy\Documents\NetBeansProjects\Entity Extraction\dist\Entity Extraction.jar ";

foreach($testArr as $param){
 $str.=$param.' ';
}

exec($str,$output);

这假设数组只包含字符串或数字。如果它包含对象或其他数组,则需要稍微操作一下这段代码,但是你明白了。

答案 1 :(得分:0)

你可以传递print_r($testArray,true);,或者你可以编写一个循环遍历数组的函数并创建一个列表。