问题标签 [apache-commons-exec]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
706 浏览

java - 在交互式命令模式下使用 apache exec

我需要做的是进入应用程序的交互模式,然后开始向它发送命令。该应用程序是graphicsmagick。批处理模式使您处于类似于 mysql 工作方式的状态,然后您可以在其中发送命令,而无需应用程序名称作为命令的前缀。这是我所做的:

对于输出,应用程序进入批处理模式,然后终止。从终端使用时,它将进入批处理模式,然后等待用户的命令直到 EOF 字符。我曾尝试在调用 startBatchMode() 之前向编写器添加命令,但没有任何区别。也尝试了很多东西,但结果总是一样的。

关于如何完成这项工作的任何建议?

更新

事实证明,使用 Java 运行时这非常简单,工作方式如下:

虽然我希望继续使用 exec,因为它有一些不错的功能,理想情况下我不需要重新实现。

0 投票
1 回答
1299 浏览

java - 从 EJB 内部调用外部进程(并获取其输出流)的线程安全方式

如何从 EJB 内部以线程安全的方式调用外部进程?

如 javadoc 中所述,ProcessBuilder 不是线程安全的。Apache commons exec 对线程安全只字未提,我对 Runtime.exec 也没有信心。

什么是正确的方法?

让我添加一些代码,这样人们就不会认为我在滥用,这段代码有时有效,有时无效

请不要关闭或否决这个问题。

我知道这不是线程安全的。我只想知道如何从 EJB 内部正确地做到这一点。

0 投票
1 回答
1876 浏览

java - 从 Apache exec commons 获取并解析输出流

我想做的是使用 avconv 捕获 IP Cam 的流。我已经设法获取该流并将其保存到使用 Java 的 apache exec commons 库的文件中,如下所示:

有了这个,avconv 开始捕获流并将其保存到一个文件中,在控制台上我可以看到 avconv 是如何工作的以及进程的输出。该输出的每一行都显示了当前正在捕获的视频的持续时间、比特率等。我需要捕获该输出并在它运行时对其进行处理。有什么想法吗?

我读过很多帖子:

处理来自 apache-commons exec 的输出

如何使用 Commons Exec 将命令的输出捕获为字符串?

但是他们都在进程完成时读取输出,我需要在它运行时读取它。

0 投票
1 回答
210 浏览

java - 使用 Commons Exec 进行上下文相关的执行

我要做的只是运行一个批处理文件,该文件为成功执行后续命令(设置环境变量和其他东西)做一些必要的准备工作。为了证明这一点,我整理了一个使用 Commons Exec 的示例

但这会打印空字符串而不是单词“test”。有什么线索吗?

0 投票
0 回答
111 浏览

java - 使用 apache commons-exec 将多个值发送到外部进程时出现问题

我正在尝试编写一个小应用程序,它可以自动使用外部应用程序,即 cisco any connect 移动客户端。它提供了一个命令行工具,您可以使用它来连接您的 VPN。

我想使用 apache commons-exec 库从我的 java 应用程序运行这个命令行工具,并能够读取他的输出以发送所需的信息。

我已经在网上搜索以找到“如何与外部应用程序通信”,但我发现的唯一帖子是这篇文章:Trouble provide multiple input to a Command using Apache Commons Exec and extracting output where it just says“嘿,我找到了解决方案”,但我不明白他是如何做到的。

当我开始这个过程时,我运行一个读取输入的函数,如下所示:

函数发送消息只是运行一个线程写入进程输入流然后刷新它。

如您所见,我检查输出以根据它向进程发送消息(基本上是为了回答问题)。但是,当涉及到“请输入...”时,我得到了这个异常

我的问题是,我找不到如何通过读取他的输出并根据它告诉我的内容向它发送消息来与流程“沟通”。

你能帮助我吗 ?

谢谢阅读。

0 投票
1 回答
5111 浏览

java - Commons exec 在环境变量值中寻找主类

我正在尝试使用 Apache commons exec 从 Java 应用程序中启动脚本,并收到以下错误:

对于以下代码:

该错误使我陷入循环,因为它似乎正在拆分环境变量的引用值并按该名称查找类,而不是使用环境变量运行命令。对于它的价值,以下在 bash 中执行得很好:

任何人都可以提供一些关于为什么引用的值在空格上被分割的见解,和/或为什么它正在寻找值中的主类JAVA_OPTS?我是否正确使用环境贴图?

0 投票
1 回答
80 浏览

java - 根据一个请求从网络服务器启动另一个程序,并在以后的请求中终止它

我有一个 Java 网络服务器,我从中使用 Apache commons exec 启动一个外部应用程序。在高层次上,流程是用户将指定参数并使用 POST 启动应用程序,然后会有一个状态页面,他们可以从中随时取消应用程序(它可能会运行数天)。

我像这样异步启动应用程序:

我知道在处理第一个 POST 请求时,我可以像这样终止进程:

但是我需要立即响应 POST 以便用户可以转到状态页面,这意味着我将无法DefaultExecutor从后续请求中访问该实例。鉴于我必须假设可能有多个用户因此运行的应用程序实例不止一个,我如何让用户发送单独的请求以稍后取消执行?(如有必要,我可以在响应中包含额外数据并取消请求。)

0 投票
1 回答
156 浏览

java - Commons exec:启动,发送到子进程,并在 stdin/stdout 上回读

如何在Apache Commons Exec中实现以下目标?(这个用例似乎没有任何文档)。

  1. 启动子进程。
  2. 在子进程的标准输入上传递一个字符串。
  3. 等待子进程终止。
  4. 从子进程中收集标准输出作为字符串。
0 投票
0 回答
943 浏览

java - 如何使用 apache common exec 运行交互式 python 脚本?

我正在尝试使用 Apache Commons exec 运行 python 脚本。我需要在交互式脚本中将一些值作为 python 脚本传递给 python 脚本。怎么做?

我的尝试是在父进程的输入流中设置值。但这对我不起作用。

到目前为止我的代码:

0 投票
1 回答
411 浏览

apache-commons-exec - Apache Commons Exec:可执行文件不在 PATH 中

如何执行不在系统 PATH 上的程序(我不想把它放在那里)?例如。最简单的例子:

投掷

(对于 PATH 上的程序也是如此,例如,“/usr/bin/ls”失败并显示相同的消息。)

注意:我不想更改工作目录。