通过 cmd 提示符从 PHP 执行 .jar 文件并捕获输出
我的应用程序有一个 jar 文件,其中包含多个类。 PHP 通过命令提示符调用该 jar 文件。我使用以下 PHP 代码片段来调用 jar 文件。
<?php
$result=popen('java -jar D:\\Development\\Filehandler\\dist\\Filehandler.jar getConfigLang', "r");
while(!feof($result)){
print fread($result, 1024);
flush();
}
fclose($result);
?>
这里的问题很有趣。我能够获得主函数中的“System.out.println”语句。但无法获取其他类的输出语句。
我也尝试过使用 exec() 。 .jar 工作正常,当直接从命令提示符调用时,它工作正常。
有没有办法捕获整个输出?
I have a jar file of my application which has more than one class. The jar file is called by PHP through the command prompt. I am using the following PHP snippet to call the jar file.
<?php
$result=popen('java -jar D:\\Development\\Filehandler\\dist\\Filehandler.jar getConfigLang', "r");
while(!feof($result)){
print fread($result, 1024);
flush();
}
fclose($result);
?>
The problem here is interesting. I am able to get the 'System.out.println' statements which are in the main function. But unable to get the output statements from other classes.
I have tried with exec() also. The .jar is working fine and when called from the command prompt directly, its working fine.
Is there a way to capture the whole output?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您是否尝试过使用 proc_open 代替:
http://au.php.net/manual/en/function.proc-open.php
它允许您设置管道“将被设置为索引数组与所创建的任何管道的 PHP 末端相对应的文件指针。”
来自 php.net 的示例
Have you tried using proc_open instead:
http://au.php.net/manual/en/function.proc-open.php
it allows you to setup the pipes "Will be set to an indexed array of file pointers that correspond to PHP's end of any pipes that are created."
Example from php.net