问题标签 [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 回答
133 浏览

java - 使用 docker-machine 从 java 创建

我有一个(我想)使用 Java 来启动和停止 Docker 容器的应用程序。似乎这样做的方法是使用 docker-machine create,当我从命令行进行测试时它工作正常。

但是,当从 Java 使用 Commons-Exec 运行时,出现错误:

VBOX_USER_HOME我在用于启动机器的初始化脚本中设置了我的变量:

我正在通过 Commons ExecCommandLine类从 Java 执行此操作:

如果有另一个库可以与 Java 中的 docker-machine 接口,我很乐意使用它,或者如果这是问题的话,可以更换 Commons Exec(尽管我不明白为什么)。基本要求是我有某种方法可以让 docker-machine 使用 Java 创建一台机器,然后再使用 docker-machine 来停止该机器。

0 投票
0 回答
1006 浏览

java - 在java中通过cmd执行git命令并获取整个控制台输出

我想通过 java 中的 cmd 执行 git 命令,并想验证收到的整个输出。预期的:

克隆到“gitrepo”...

远程:计数对象:92,完成

远程:查找来源:100% (92/92)

远程:获取大小:100% (76/76)

远程:压缩对象:98% (2370/2400)

远程:总计 92(增量 14),重复使用 89(增量 14)

拆包对象:100% (92/92),完成。

检查连接...完成。

尝试 No.1 - ProcessBuilder

结果:在 While 循环中挂起

尝试 2 - 新线程中的扫描仪

结果 - 在 while 循环中挂起

尝试 No. 3 - Runnable 类

结果——永不返回

尝试第 4 项 - org.apache.commons.fileupload.utils.stream

结果——永远挂起

尝试 5 号——Crydust/Git.java

https://gist.github.com/Crydust/fd1b94afc52cd0f7dd4c

结果 - 仅返回第一条语句“克隆到 git.repo...”

尝试 6 号 --apache.commomns.executor (Executor Watch dog)

结果 - 挂起

尝试 7 号 - ztexec 库

结果 - 仅返回第一条语句“克隆到 git.repo...”

注意::: 不使用 jgit 库,因为需要浅克隆,而 jgit 尚不支持。

0 投票
2 回答
983 浏览

java - 无法从 Apache Commons Exec 获取输出

尽管标题非常相似,但这个问题不是apache-commons exec 的 Process 输出的重复。

我正在尝试使用 apache-commons exec 获取命令的输出。这是我正在做的

问题是它runCommand(cmd2)不会在输出中打印任何内容。当我尝试在终端上运行命令时,它工作正常。

我已经在有和没有 IDE 的情况下尝试过这个程序,所以我确信这与 IDE 控制台无关。

这是一个屏幕截图

在此处输入图像描述

这是终端的屏幕截图

在此处输入图像描述

在终端上运行的 Python 命令

在此处输入图像描述

0 投票
0 回答
37 浏览

java - Apache ExectuorWatchDog 在写入 System.out/JtextArea 时挂起

我正在使用 java 中的 Apache.commons.exec.Executor 从 cmd shell 执行 testng.xml(有 40 个测试用例),代码如下:

但是它在执行 11-14 个测试用例后挂起,它停止写入控制台并永远挂起。如果我终止它的进程,testng.xml 的执行会突然恢复,但是现在我已经终止了执行程序进程,我看不到控制台输出。

0 投票
0 回答
112 浏览

java - 使用 Apache Commons Exec 为新进程生成单独的窗口?

我正在尝试使用 Apache Commons Exec 库在它们自己的窗口中启动几个批处理文件,虽然我能够正确启动它们,但我遇到了一个小问题,即生成的 JVM 的输出显示在原始进程的窗口。我需要它们都显示在自己单独的窗口中,但尽管使用了我认为正确的参数,所有输出都转储到原始控制台。

以下是我如何生成进程。

是否有我缺少的启动命令的参数导致它们在自己的控制台窗口中产生?还是需要调用执行程序类的其他方法?

0 投票
2 回答
2152 浏览

java - 使用 apache commons exec 运行管道命令的更好方法

我正在使用 apache commons exec 运行命令:arp | wc -l 下面是我的代码:

这里是 cmd/bin/sh和 params-c arp|wc-l 代码给出以下输出:

我在这里有两个问题:
问题 1。我不明白为什么我的输出中有三个数字(54 71 4321)。不应该只有一个数字吗?

问题2。有没有更好的方法来使用 apache commons exec 运行相同的命令?

0 投票
1 回答
498 浏览

java - 运行命令时出错,包含使用 apache commons exec 的多个参数

使用 apache commons exec 运行以下命令时遇到问题:sysctl -n net.ipv4.neigh.default.gc_thresh3

问题是它给出了以下错误:

下面是我的代码:

我正在使用 cmd -/bin/sh和 params - -c sysctl -n net.ipv4.neigh.default.gc_thresh3

如何使用 apache commons exec 运行这样的命令而不会遇到此类错误?
我不需要完整的解决方案。任何好的方向都适合我。

0 投票
3 回答
848 浏览

java - Apache Commons exec PumpStreamHandler 持续输入

我正在尝试使用 Apache Commons exec 解决与命令行进程的交互。我坚持以下代码:

我希望我的代码很清楚。我在清除流时连续阅读out并在 3 秒后打印它。问题是in传递给的输入PumpStreamHandler。我需要从代码本身连续动态地传递进程命令,就好像我正在通过 CLI 与进程交互一样。当我简单地System.in用作PumpStreamHandler参数时,我可以很好地从控制台编写进程命令。我怎样才能设法从代码中传递相同的结果?

编辑: 我也尝试连接PipedInputStream从 接收数据PipedOutputStream,但似乎只有在关闭后才能读取数据,PipedOutputStream这使得它无法重用,因此我无法实现交互性。

编辑2: 解决了自己。下面的答案中的解决方案。豪。:-)

0 投票
1 回答
69 浏览

java - 如何使用 Selenium 框架从受用户名和密码保护的站点下载文件?

我正在尝试使用 Selenium 从受用户名和密码保护的站点下载文件。

首先,我从下载链接中获得了 href 属性:

其次,我使用 Selenium 网络驱动程序获得了“AUTHSESSION”cookie:

然后我构建了一个包含Linux“wget”命令的字符串,就像这样(我为此使用了apache commons exec artifact):

最后,我执行命令,并提取执行输出:

执行后,文件被下载到指定路径。但这不是我们想要的。这是一个 html 文件,其中包含我要从中下载的网站的登录页面。

以下是包含在执行输出中的字符串:

一个重要的注意事项是,如果我在 Linux 终端中运行以下命令,则文件下载成功:

我错过了什么?

0 投票
3 回答
154 浏览

java - Java Rsync 转义空间

我正在尝试从 jar 中运行 rsync。当源路径没有空格时,一切正常,但是当源路径中有空格时,它会失败。根据手册页,我尝试了各种转义空格的方法,例如 source.replaceAll("\s", "\\") 或 source.replaceAll("\s", "?"),但没有利用。

当我输出运行的命令,然后从命令行运行完全相同的命令时,一切正常。我看不出我做错了什么

我的代码如下:

RsyncCommandLine 类

CommandLineExecutorHelper 类 -

CommnadLineOutputStream 类 -

因此,当我在没有空格的情况下运行 jar 时,它是成功的:

输出命令是:

当我对带有空格的路径运行相同的 jar 时:

我收到以下错误消息:

目标路径是从文件打开对话框中选取的。