问题标签 [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.
java - 使用 apache commons exec 运行简单的 cmd.exe 命令
我想从 java 运行 cmd.exe 命令(例如 md C:\blabla 来创建一个新目录 C:\blabla )我的代码看起来像这样,它运行没有任何错误:
但是如果我去 C:\ 没有我期望的文件夹 blabla,因为在 cmd.exe 中手动键入 md C:\blabla 工作正常。我还尝试了“C:\Windows\System32\cmd.exe”而不是“cmd.exe”,但没有用。
控制台中的输出如下所示:
Microsoft Windows [版本 6.1.7601] 版权所有 (c) 2009 Microsoft Corporation。版权所有。
C:\Users\Selphiron\workspace\Test>
错误在哪里?
java - 为什么“git pull” exec 命令卡住并且什么也不打印?
执行以下命令时,系统会提示我输入密码:
当我尝试使用 Apache Commons Exec 以编程方式显示相同的信息时,程序卡住并且不打印任何内容:
为什么该示例没有打印任何内容就卡住了,并且在使用本机控制台时提示我提供 git 密码?
java - 如何从Java中的命令提示符访问带有空格的文件路径
我正在尝试从 Java 程序运行批处理文件。例如:我在“程序文件”的文件夹中有一批“abc.bat”。
我想从我的 Java 程序中执行这个批处理。我正在使用 CommandLine 类,Commons-exec jar。
上面的代码会抛出一个错误,提示“Windows 找不到文件。请确保您输入了正确的名称,然后再试一次”。而且,那是因为路径中的空格。
所以,我尝试了@brso05 在此处提供的答案,并且有效。但我希望它在未来课程中。请在下面找到我的代码并帮助我修复它。
我提到的代码有效,但如果我的批处理文件在路径中有空格,它就不起作用。你能帮我解决这个问题吗?
因为你给出的代码片段有效,但我不能把它放到未来。它不能以所需的方式工作。
提前致谢!
java - 如何杀死在我的测试套件下创建的所有子进程?
我正在使用 maven(插件版本 1.7)和 Aspectj-1.8.3。
我的场景如下:我有一个要测试的安装程序 jar。安装程序正在使用另一个 jar,my-common.jar 库,它包装了 Apache 的实用程序 commons-exec-1.3 并使用它来执行命令,我编写的方法如下所示:
问题是,由于我的测试执行另一个 jar,我的意思是安装程序,并且安装程序 jar 执行另一个(让我们将其命名为 app.jar),然后安装程序终止并且 app.jar 继续运行(首先,安装程序正在执行安装并准备环境,然后,他执行了 app.jar),当测试套件完成时,app jar 并没有被终止(这是我的意图以及它在生产环境中的假设方式)。
全局目标是杀死所有在集成测试套件下创建的进程。
我的解决方案:由于进程 id 只暴露给java.lang.UNIXProcess
我想收集所有进程 id,然后在测试套件结束时手动终止它们。
我想把一个方面是这样的:
这是我在不重新设计代码的某些部分的情况下解决问题的想法。因此,对于某些人来说,我正在寻找一种方法来确保在集成测试套件下创建的所有子流程都被终止。
欢迎任何解决方案。
java - Apache Commons exec 输入问题
我正在尝试将一些纯文本密钥传递给第三方外部程序,然后将输出捕获到字符串。一切似乎都在工作,除了第三方程序不接受输入为“正常”。我收到“输入太长”错误。但是当在 bash shell 中将相同的文本集运行到相同的二进制文件时,它会按预期工作。我似乎找不到任何会附加额外字符的东西。
我一直在关注这个例子:如何将字符串参数传递给使用 Apache Commons Exec 启动的可执行文件?
如果我是正确的,这应该与在 shell 中输入相同
哪个有效。我可以让stderr打印得很好,甚至可以得到stdout(由于密钥被拒绝,它恰好是空白的)任何帮助表示赞赏。
java - Java - apache commons exec,在同一“上下文”中运行 2 个命令
我不确定上下文是否是在这里使用的正确词,但我的意思是
test.exe 位于文件夹 test 中,我想从文件夹 test 运行它,我知道我可以运行
但我需要从文件夹 test 运行 test.exe。
有没有办法在同一个“上下文”中运行这两个命令?
我努力了:
但正如预期的那样,它找不到test.exe
。
java - 使用 Apache Commons Exec 复制
我正在尝试使用 Apache Commons API 执行复制命令。以下是我的努力:
输出 :
scp -i /Users/TD/.ssh/id_rsa /Users/TD/One.txt "root@my.server.com:/Leo/Ta/San Diego"
org.apache.commons.exec.ExecuteException:进程退出并出现错误:1(退出值:1)
相同的程序适用于其中没有空间的目标文件夹:
字符串目的地="/Leo/Ta/SanJose";
scp -i /Users/TD/.ssh/id_rsa /Users/TD/One.txt root@my.server.com:/Leo/Ta/SanJose
java - 关于 Runtime.getRuntime().exec() 的基础问题
我了解到 Runtime.getRuntime().exec() 用于从 Java 调用外部应用程序。也可以使用 processbuilders 和 apache commons exec。
但我有几个基本问题。
子流程创建是如何发生的?它会继承与父进程相同的内存吗?我们可以控制子进程的内存分配吗?
如果父进程被杀死,它是否也会杀死子进程?
创建子进程会影响父进程多少成本(就资源而言)。
这样做有什么陷阱吗?
我尝试在网上搜索,但找不到我的问题的明确答案。
谢谢,
java - 用分号执行 apache-commons-exec 多个命令
我正在使用 apache-commons-exec 在 Java 应用程序中执行一些命令。
当我执行 'ls -la /home/user' 时效果很好。
但我需要执行这样的事情
我将命令输入到 CommandLine 对象中,但它不起作用。
它返回一个空字符串和 -559038737 退出代码。
因为环境和脚本的性质(第一个设置了一些需要的环境变量);我无法将所有调用放入脚本中,我尝试了许多解决方案(例如用引号将所有命令括起来,如“'”或使用 PumStreamHandlet 输入流),但到目前为止没有任何效果......
有人有想法吗?
java - 在子进程可用时从子进程中读取标准输出流
在我的 Java 应用程序中,我需要将一些脚本作为子进程执行并监视 Java 标准输出上的输出,以便在必要时对某些输出做出反应。
我正在使用 apache commons-exec 生成子进程并将执行脚本的标准输出重定向到输入流。
我遇到的问题是,从流中读取时,Java 进程被阻塞,直到子进程完成执行。我不能等到子进程结束才对输出做出反应,但我需要在它可用时异步读取它。
下面是我的Java代码:
对于这个例子,子进程是一个 Python 脚本,它在输出之间有 1 秒的延迟,向上计数,以便我可以验证 Java 代码在数据进入时是否响应。
蟒蛇代码:
我希望 LogOutputStreamImpl 打印每一行,但实际发生的是它读取流块直到子进程完成,然后打印所有输出。
我可以做些什么来按我的意愿完成这项工作吗?