问题标签 [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.

0 投票
1 回答
440 浏览

java - 正确设置工作路径

我希望输出是/server1/work/uz/rt/adapt/0/,但它是:

/work/uz/rt/adapt/0/并且/server1/work/uz/rt/adapt/0/是等效的(安装在同一个地方,/work/.. 是正确的路径,/server1/work/.. 是安装的路径),但我需要在下面工作,/server1/work/uz/rt/adapt/0/因为其他一些服务器只能通过该路径工作。

如何制作/server1/work/uz/rt/adapt/0/当前路径?

换句话说

为什么公共 ProcessBuilder 目录(文件目录)将目录转换为规范文件。如何使用绝对文件路径?

我也尝试了破解解决方案

这也不起作用。

我通过在 bash 脚本中添加 cd /server1/.. 行来解决我的问题.. 并删除了 pd.directory(..) 行。但是这个问题(为什么我不能将 pd.directory(..) 与 absolutePath 一起使用)尚未得到解答......?

0 投票
4 回答
14203 浏览

java - 远程执行批处理文件java

我想执行远程位于服务器上的 bat 文件 \\testserver\someFolderName\test.bat。我正在使用流程构建器,并希望使用 procbuilder.directory(....), 但无法成功更改目录。

任何帮助表示赞赏。谢谢

0 投票
2 回答
3379 浏览

java - java: ProcessBuilder 会占用内存

我有一些关于 ProcessBuilder 的问题。该程序基本上是一个调用命令行脚本的简单包装器。

通过终端自行运行脚本时,内存消耗保持在 2G 以下。通过java wrapper运行脚本时,内存消耗爆炸,甚至8G也很快被填满,导致内存不足的错误。

启动该过程的代码很简单:

StreamConsumer 类只是一个使用 stdout/stderr 流并将它们显示在控制台上的类。

...问题是:到底为什么内存消耗会爆炸?

问候,
阿诺

编辑:

  • 无论我使用 ProcessBuilder 还是 Runtime.getRuntime.exec(...),结果都是一样的。
  • 内存爆发往往出现在由 shell 脚本调用的 unix 'sort' 期间:

应 Jim Garrison 的要求编辑 2:

好的,这是我省略的 StreamConsumer 类,因为它相当简单:

0 投票
2 回答
5470 浏览

java - ProcessBuilder 在收到错误后卡住

我正在尝试远程执行 .bat 文件并实现以下代码行:

但是我的程序卡在了while循环中。它显示的错误是:

它永远不会退出while循环。但它会成功执行脚本。任何形式的帮助表示赞赏。谢谢

0 投票
2 回答
2999 浏览

java - Java ProcessBuilder:找不到命令

我正在尝试运行我在 linux 上找到的一些 Java 代码。

这会引发 IOException - bash 找不到“maude”命令。

我在我的 .bashrc 文件中有这个别名:

如果我像这样更改代码:

它工作正常。

我想更改此代码,使其更健壮 - 如果有人可以在命令行上运行 Maude,则 ProcessBuilder 也应该能够使用它,无论用户必须使用何种特定方法将 Maude 链接起来。

这可以实现吗?

0 投票
1 回答
18204 浏览

java - ProcessBuilder 与 Runtime.exec()

我正在尝试使用 Inkscape 的命令行功能在 Java 中创建一个前端应用程序来处理批量 SVG 转换。我正在从https://sourceforge.net/projects/conversionsvg/获取并更新代码。原始开发人员通过Runtime.getRuntime().exec(String)处理调用 Inkscape 的方式。我遇到的问题是使用methodA和methodB之间的一些不一致。我创建了一个简单的 java 测试项目来演示正在执行的不同操作。

调用者测试.java

RuntimeExecCaller.java

ProcessBuilderCaller.java

结果

两个methodA(String)调用都有效,但是当调用methodB(String[])时,Inkscape 正在启动并且参数传递不正确。在methodB(String[])执行后,我会为每个说法得到一个 Inkscape 错误对话框

加载请求文件失败 -f C:/test.svg -D -w 100 -h 100 -e C:\RuntimeExec-methodB.png

加载请求文件失败 -f C:/test.svg -D -w 100 -h 100 -e C:\ProcessBuilder-methodB.png

当我单击对话框上的关闭时,Inkscape 会弹出一个新的空白文档。所以,我想我有几个问题:

Runtime.getRuntime().exec(String) 和 Runtime.getRuntime().exec(String[]) 有什么区别?

JavaDoc 说Runtime.exec(String)调用Runtime.exec(command, null)(即Runtime.exec(String cmd, String[] envp)),后者又调用Runtime.exec(cmdarray, envp)(即Runtime .exec(字符串[] cmdarray,字符串[] envp))。所以,如果Runtime.getRuntime().exec(String ) 无论如何都在调用Runtime.exec(String[]),为什么我在使用不同的方法时会得到不同的结果?

Java 根据调用的方法以不同方式设置环境的幕后发生了什么?

0 投票
3 回答
11039 浏览

java - 通过java在linux终端上执行命令

我创建了一个独立的应用程序,我希望当用户单击运行按钮时终端应该打开并且应该在终端上执行特定的命令。我可以使用以下代码成功打开终端...

上面的代码打开了一个终端窗口,但我无法对其执行任何命令。谁能告诉我该怎么做?

0 投票
2 回答
10222 浏览

java - 问题 ProcessBuilder 运行脚本 sh

尝试使用这段代码执行脚本:

我没有收到任何错误,但也没有收到预期的结果。无论如何,我尝试在终端中直接运行相同的命令,并且一切正常。
我错过了什么吗?

提前致谢

0 投票
2 回答
2587 浏览

java - 在包含Java空格的工作目录中执行外部可执行文件?

在 Os x 上执行我的程序期间,我特别需要解压缩在不同子目录中找到的文件。我通过调用免费软件命令行工具 unrar 来做到这一点,它工作得很好。但是,unrar 将始终解压缩当前工作目录中的文件,这意味着我必须为执行的进程指定一个工作目录或获取我的 .jar 主文件夹中的每个解压缩文件。这很容易使用 processBuilder.directory(dir) 或runTime.getRuntime().exec(args,null,dir)例如 dir 是一个文件。这很好用,但当工作目录包含空格时就不行了。作为一个简短的例子:

将不起作用,而使用:Process pr = Runtime.getRuntime().exec(cmd);将成功启动命令,但将所有文件留在 jars 工作目录中。改用 processbuilder 并使用 processbuilder.directory(dir);设置目录退出并显示以下消息:

帮助?我如何处理空间?我尝试在空格之前添加反斜杠以使它们在字面上没有帮助,因为 File 对象将它们视为路径的实际部分。

编辑:为了让整个事情更清楚一点: 1. 我有一个单独的方法,它为执行方法提供一个命令和一个目录到 processbuilder,所有目录都由前一个方法找到并存在。除非目录包含空格,否则此方法有效。2.我需要设置工作目录,否则命令会在错误的地方执行。3.通过以下方式解析文件对象: dir=new File(dir.tostring.replace(" ","\ "); 将反斜杠放在所有空格前面不起作用,因为 java File 对象然后查找包含的路径实际的反斜杠。没有运气。4.使用 rt.exec 而不是 processbuilder 也无济于事。

欢迎任何想法。

0 投票
2 回答
1087 浏览

java - 将命令行软件与Java程序集成

我正在将开源 c 程序与 Java 程序集成。

我曾尝试使用 JNI,但这不是我想做的适当方式。

c程序的用法如下。

我可以像这样使用 ProcessBuilder 类运行这个程序。

但是有很多可选参数,所以它看起来像是维护我的 Java 程序的错误方法。

有什么想法可以通过软件设计的好方法来解决这个问题吗?

提前致谢。