【问题标题】:How to use php 'exec' to run .jar with input parameters如何使用 php 'exec' 运行带有输入参数的 .jar
【发布时间】:2012-08-12 21:08:46
【问题描述】:

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

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

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

谁能告诉我怎么做?

更新:

在我的 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 主类中,我有

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

【问题讨论】:

  • 您应该能够将数组添加到 exec 命令,前提是它由字符串组成,然后可以通过 args 参数在您的 java main 中访问它(它将显示为单个您必须拆分的字符串)。但是,您能详细说明一下您的打算吗?首先,这听起来像是一件坏事……
  • 你能告诉我如何在'exec'代码中使用它并在main方法中使用它(如果可以的话)。

标签: java php jar command-line-arguments


【解决方案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);

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

【讨论】:

  • 这不起作用。我添加 $testArr[0] = 'test1';$testArr[1] = 'test2';在 '$str=....' 参数之前。在我的主要方法中添加波纹管命令。 int 长度 = args.length; for (int i = 0; i
  • 请用您尝试过的代码更新问题,在 cmets 中很难看到。
  • 我在命令提示符下尝试了这个,也只是在'Extraction.jar'之后给出单个字符串。但它说'无法访问 jarfile ...'
  • 当我使用 cd 命令进入 'dist' 文件夹然后使用输入参数运行 .jar 文件时,它在命令提示符下工作?
  • 您的 jar 名称“entity extract.jar”是否带有空格?如果是这样,这是一个很大的禁忌,请将其更改为 entity_extraction.jar 并重试
【解决方案2】:

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

【讨论】:

  • 我如何通过'print_r($testArray,true);'与“执行”?
  • 您可以使用exec("stuff here ".print_r($testArray,true)." other stuff here"); 或使用$params = print_r($testArray,true); 通过变量传递它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-02
  • 2012-04-17
  • 2015-03-26
  • 1970-01-01
  • 2015-06-21
  • 1970-01-01
  • 2023-03-13
相关资源
最近更新 更多