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

java - 处理大型 zip 文件压缩后 7Zip 不退出

我正在windows平台上编写一个java程序。我需要将某些文件压缩到一个 zip 存档中。我正在使用 ProcessBuilder 启动一个新的 7zip 进程:

问题是 7zip 进程在完成后永远不会退出。它确实创建了所需的 zip 文件,但之后就挂在那里了。这意味着waitFor()调用永远不会返回并且我的程序卡住了。请建议修复或解决方法。

0 投票
1 回答
5486 浏览

java - 从 ProcessBuilder 执行一个 jar 会给出 ClassNotFoundException

当我尝试从命令行执行 jar 时,它工作正常。我正在尝试在另一个 java 程序中执行相同的 jar,如下所示:

但是,这给了我一个 ClassNotFoundException

为什么它认为这是一个类?您不能在一个长字符串中指定您的参数吗?

0 投票
2 回答
4883 浏览

java - 通过 processbuilder 运行脚本

我正在尝试从 java 程序运行 Python、Ruby、C、C++ 和 Java 脚本,并且向我建议 Processbuilder 作为运行脚本的好方法。据我了解,Processbuilder 主要运行本机文件(Windows 上的 .exe 等)。但是,我听说过一些关于使用 Processbuilder 运行脚本(非本地)文件的事情。不幸的是,我在这个主题上发现的一切都非常模糊。

如果有人能阐明一种运行非本地脚本(如 Python、Ruby 等)的方法,我将不胜感激!

0 投票
1 回答
885 浏览

java - Swing - 启动浏览器并在用户关闭时收听

我有这个具体要求。如果用户单击 GUI 中的按钮,我需要启动浏览器。我需要等两分钟。如果用户在两分钟前关闭浏览器,我需要启动窗口“A”。如果浏览器保持打开超过两分钟,我需要启动窗口“B”。

目前我可以启动浏览器窗口。但是当用户关闭它时无法收听。下面是我编写的代码的快照。

目前,只要浏览器启动,waitFor() 就会返回。我需要等到用户关闭浏览器窗口。知道怎么做吗?

0 投票
18 回答
128606 浏览

java - 如何获取我刚刚在 java 程序中启动的进程的 PID?

我已经使用以下代码开始了一个过程

现在我需要知道我刚刚启动的进程的 pid。

0 投票
2 回答
466 浏览

java - Processbuilder-在linux中打开java脚本

又回来了,这次是一个 java 问题。有人告诉我如何让 Processbuilder 运行非本地脚本(调用将运行脚本的程序),但我一直在尝试运行 java 脚本并遇到了几个问题。首先,我应该使用 .class 还是 .jar?这两个都可以运行,但我不确定哪一个会更好。然后我该如何正确执行它们?我试过调用java(/usr/lib/jvm/java-6-openjdk/jre/bin/java),然后将文件路径提供给类文件,但这似乎不起作用。

有任何想法吗?

0 投票
1 回答
2148 浏览

java - 需要有关 Solaris 下 Java 的 ProcessBuilder 性能的帮助

我的问题是,JVM 是否共享某种与线程或进程相关的资源,这些资源可能会导致 ProcessBuilder 性能在正常使用一个月或更长时间后飙升?对所有应用程序使用 java 6 update 21。

在过去的几个月里,我们注意到我们数据中心的一台服务器(运行 Solaris 10 的 Sparc M4000)可以运行大约 6-8 周而没有问题。然而,很快,使用 ProcessBuilder 类来运行脚本的应用程序的性能会受到巨大的影响 - ProcessBuilder.start 有时需要一分钟以上才能返回。重新启动后以及几周后,正常返回时间在 10 秒或 100 毫秒范围内。

我编写了一个单独的小应用程序,它创建了 5 个线程,每个线程使用 ProcessBuilder 连续运行 'ls' 命令 10 次,然后我从中收集统计信息以监控原始问题。此应用程序在每次运行后退出,并且每小时仅从 cron 运行一次。通常只需要一两秒钟。

昨晚,经过 45 天的正常运行时间和正常行为后,每个 ProcessBuilder.start 调用的 ProcessBuilder 时间再次飙升至超过一分钟。

顶部显示没有内存或 CPU 占用。我确实尝试在测试应用程序上执行 jstack,但收到错误“无法创建 thread_db 代理”。

有任何想法吗?

0 投票
1 回答
554 浏览

java - Java ProcessBuilder如何从进程捕获文件读取请求并作为流提供?

我对 ProcessBuilder 有点熟悉,并且会处理流。现在我遇到了一个问题,即我正在自动化的过程从我需要提供的两个文件中读取一些信息。目前,我正在编写文件并通过 ProcessBuilder 提供程序的路径。由于我预计在不久的将来会有数百万次运行,我想通过在内存中完成所有工作而不是读写文件来加快速度。

基本上,我需要做的是从自动化程序中捕获文件打开请求,并从字符串流或类似的东西中提供预期的数据。当然,如果我能以某种方式告诉 ProcessBuilder,我给出的文件路径将被更好的流替换。

我怎样才能做到这一点?

0 投票
3 回答
7159 浏览

java - 无法在 Windows 7 下使用 ProcessBuilder 在 Java 中执行 javac 或其他命令行应用程序

我正在尝试使用 ProcessBuilder 从 Java 执行 javac,但我没有得到任何输出,也没有任何反应。我尝试读取输入流(因为如果我不读取它会出现进程挂起的错误),但仍然没有结果。我最初将所有必需的参数传递给 javac 但它不起作用,所以我将它简化为 javac (它应该打印帮助消息)。

我尝试运行 "C:\Windows\System32\cmd.exe /c C:\\"Program Files\"\Java\jdk1.6.0_23\bin\javac.exe" "C:\\"Program Files\"\ Java\jdk1.6.0_23\bin\javac.exe" 并用双引号将 javac 的整个路径括起来,但仍然没有。

我得到错误

无法运行程序 "C:\Windows\System32\cmd.exe /c C:\"Program Files"\Java\jdk1.6.0_23\bin\javac.exe": CreateProcess error=2, 系统找不到指定的文件

但是如果我复制命令并从命令行运行它,它工作正常。

我知道使用 JavaCompiler 类来编译我的文件,但我更愿意先解决这个问题,因为我无法从 Java 运行任何 dos 应用程序或 .bat 文件。我可以很好地运行像 notepad.exe 这样的 GUI 程序。

编辑 2

编辑 3

为什么第二个命令数组有效但第一个不在下面。

0 投票
1 回答
3377 浏览

java - 用java运行bat文件

在这里,我正在尝试从 java 程序运行 bat 文件。我想从 c:\File\Create.bat 运行 bat 文件,但是当我运行代码时,它正在我的 java 程序所在的 d:\NetBeansPeoject\test.java 中搜索,为什么?

这里的代码: