问题标签 [processbuilder]
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.
nullpointerexception - Powermock:ProcessBuilder redirectErrorStream 给出 nullPointerException
我正在使用 powermock 使用进程构建器来模拟一些本机命令调用。奇怪的是这些测试有时会通过,有时会失败,给出 NPE。这是一个powermock问题还是程序中的一些问题。
这是我正在测试的课程的片段:
单元测试用例是:
我在执行时遇到错误,并且测试用例失败..
注意:我在所有执行中都没有收到此错误。有时它通过,有时它失败。我无法理解这种行为。另外,由于版权问题,我伪装了一些变量名。
java - 进程需要重定向输入
我有一个 UNIX 本机可执行文件,需要像这样输入参数
prog.exe < foo.txt。
foo.txt 有两行: bar baz
我正在使用 java.lang.ProcessBuilder 来执行这个命令。不幸的是,prog.exe 只能使用来自文件的重定向。有什么方法可以在 Java 中模仿这种行为吗?
当然,
不起作用。
谢谢!
java - ProcessBuilder的正确使用
经过研究,我注意到使用 java 的 ProcessBuilder 的“正确”方法是生成另外两个线程来管理吞噬新创建的进程的 stdout/stderr,这样它就不会像这里所示的那样挂起: javaworld 文章
但这让我想知道 2 个问题 - 1.) 为什么需要单独的进程而不是让父进程吞噬 stdout 然后依次获取 stderr?
2.) 此外,如果您要将流重定向到两者都转到标准输出,是否可以让父进程吞下标准输出流,然后不必担心死锁?
java - Java:ProcessBuilder 更改路径
我正在编写一个 Java 程序,它应该是 GUI 前端,它利用第三级 C 程序为各种标签生成一些值。
但我不想硬编码 C 程序的路径。我只希望 Java 程序执行 C 程序,假设它与我运行 Java 程序的目录位于同一目录中(否则会出现错误消息提示)。
我以前从未使用过 processbuilder 所以我会欣赏大量的例子:)
java - Java ProcessBuilder:结果进程挂起
我一直在尝试使用 Java 的 ProcessBuilder 在 Linux 中启动一个应该“长期”运行的应用程序。该程序运行的方式是启动一个命令(在本例中,我正在启动一个媒体播放应用程序),允许它运行,并检查以确保它没有崩溃。例如,检查 PID 是否仍然处于活动状态,然后重新启动该进程,如果它已经死亡。
我现在遇到的问题是 PID 在系统中仍然存在,但应用程序的 GUI 挂起。我尝试将 ProcessBuilder(cmd).start() 转移到一个单独的线程中,但这似乎并没有解决任何问题,就像我希望的那样。
基本上结果是,对于用户来说,程序似乎已经崩溃,但是杀死驱动 ProcessBuilder.start() 进程的 Java 进程实际上允许创建的进程恢复其正常行为。这意味着 Java 应用程序中的某些东西正在干扰生成的进程,但我现在完全不知道是什么。(因此为什么我尝试将它分成另一个线程,这似乎没有解决任何问题)
如果有人有任何意见/想法,请告诉我,因为我一生都想不出如何解决这个问题。
编辑:我不关心从进程创建的 I/O 流,因此没有采取任何措施来处理这个问题——这会导致进程本身挂起吗?
java - Java - 如何给方法一个数组
我有如下方法:
在这个方法中,我调用ProcessBuilder。
如何调用 ProcessBuilder,包括我的 args 参数中包含的任意数量的 args?
例如,像这样:
我注意到 ProcessBuilder 确实有这个构造函数:
也许我可以以某种方式使用它。
java - 从 Java 执行另一个应用程序
我需要执行一个批处理文件来执行另一个 Java 应用程序。我不在乎它是否成功执行,也不必捕获任何错误。
可以用ProcessBuilder做到这一点吗?如果我不捕获错误会有什么后果?
但是,我的要求只是执行另一个 Java 应用程序。
java - 使用 Process.exec
我想在我的程序中间执行一个批处理文件(这将启动另一个 java 应用程序)。我不想等待或查看它是否成功执行,也不想从执行该批处理文件中捕获错误。在我启动该批处理文件之后,我想做其他事情,而不是在执行该批处理后等待它。
我需要照顾标准输出和标准错误吗?有没有办法摆脱对标准输出和标准错误的处理。
这是我的第二篇文章,以消除我对这个主题的困惑,所以请具体到问题,只是不要抛出有关如何处理.exe 或 processbuilder 的链接。
任何帮助表示赞赏。
java - java processbuilder/rt.exec 问题
假设我有 2 个单独的 java 应用程序 javaapp1 和 javaapp2。
从 javaapp1,我正在执行一个 .bat 文件(负责启动 javaapp2)。
javaaap1 和 javaapp2 相互独立。
假设我用 process.exec 或 processbuilder 来做。
现在我的问题是:
如果exitCode不是0,在这种情况下是什么意思。这是否意味着执行批处理文件或javaapp2的代码出现问题?或两者?
是否可以从 javaapp1 中的 javaapp2 捕获错误?如果是:如何?因为我没有直接调用 javaapp2 的类。
javaapp2 错误和输出是否由 javaapp1 处理?
java - process.exec 没有返回正确的代码
我有一个带有代码的 Java 程序:
} }
test.bat 执行另一个具有以下代码的程序:
;;;; ;;;; ;;; ;;;
但是从Test1来看,exit值总是0。怎么来的,当批处理执行时,它将运行ConnectionTest类,它会因为找不到DB2Driver22222而出现异常。
谁能向我解释为什么我没有得到正确的错误代码或任何错误消息。