标签: processbuilder

ProcessBuilder 和带有空格的命令

我最近将 Java 版本更新为 JDK7u21。在更新21的发行说明中,明确提到了使用Runtime.exec的问题。

因此,我想更改我的代码以使用 ProcessBuilder。我正在尝试执行其中包含空格的命令。但即使为此使用 ProcessBuilder,我也会到达 C:\Users\Parag.Joshi\Documents,而不是确切的目录。

下面是我的代码:

ProcessBuilder p = new ProcessBuilder("cmd", "/c", "explorer ", "C:\Local Disk D\My Tutorial");
p.start();
Run Code Online (Sandbox Code Playgroud)

我查看了Java 执行路径名中带有空格的命令,但没有得到任何线索。

java processbuilder

3
推荐指数
1
解决办法
4081
查看次数

如何更改优先级进程

我有

   List<String> commands = Arrays.asList(commandv);
   ProcessBuilder pb = new ProcessBuilder("[C:\ffmpeg\ffmpeg.exe, -i, "C:\file\video.mp4",-flags, +loop, -cmp, +chroma, -partitions, +parti4x4+partp8x8+partb8x8, -me_method, umh, -subq, 6, -me_range, 16, -g, 250, -keyint_min, 25, -sc_threshold, 40, -i_qfactor, 0.71, -b_strategy, 1, -threads, 4, -b:v, 200k, , -r, 25, -v, warning, -ac, 1, -ab, 96k, -y, -vf, "scale=640:360", "C:\newVideo\video.mp4"]");
   Process proc = pb.start();
Run Code Online (Sandbox Code Playgroud)

如何在java中将进程优先级从“hight”设置为“low”?

java windows ffmpeg process processbuilder

3
推荐指数
1
解决办法
2632
查看次数

为什么java中的processBuilder在5分钟后挂起?

我有处理超过 5 分钟的命令行。当我使用 ProcessBuilder 调用命令行时,它会在 5 分钟内完成该命令。

而如果过程超过 5 分钟,则该过程会挂起,并且在我退出该过程之前,过程没有任何改进。

p = new ProcessBuilder("myprogram","with","parameter").start();
p.waitFor();
Run Code Online (Sandbox Code Playgroud)

如果您不明白上述问题,请告诉我?

java deadlock processbuilder

3
推荐指数
1
解决办法
522
查看次数

如何使用 Processbuilder 按顺序执行命令

我想使用 Java Process Builder 在 Windows 操作系统中执行 2 个命令(一个是批处理文件,另一个是 python 脚本)。但不幸的是无法做到这一点。我尝试了很多方法。

List<String> commands = new ArrayList<String>();
                commands.add("Testbatch.bat");
                commands.add("Python.exe");
                commands.add("TestPythonScript.py");
                ProcessBuilder probuilder = new ProcessBuilder(commands);
                Process process = probuilder.start();
Run Code Online (Sandbox Code Playgroud)

这里它正在执行批处理文件,但不是 python。这里,进程构建器将命令视为参数(第一个命令除外)。还尝试了以下方法但没有运气。

String [] commands={"CMD","/C","Testbatch.bat","Python.exe","TestPythonScript.py"};
ProcessBuilder probuilder = new ProcessBuilder(commands);
Process process = probuilder.start();
Run Code Online (Sandbox Code Playgroud)

使用 ProcessBuilder 按顺序(一个接一个)执行命令对我来说没有任何作用,我几乎花了 3 天但找不到正确的方法。任何人都可以建议我实现相同目标的方法吗?

谢谢,

苏德希尔

java processbuilder jakarta-ee

3
推荐指数
1
解决办法
3702
查看次数

通过 Java ProcessBuilder 激活 virtualenv

尝试通过以下代码以编程方式激活 Python 的virtualenv 时获得以下信息:

java.io.IOException: Cannot run program "." (in directory "/Users/simeon.../..../reporting"): error=13, Permission denied
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
    at VirtualEnvCreateCmdTest.runCommandInDirectory(VirtualEnvCreateCmdTest.java:30)
    at VirtualEnvCreateCmdTest.createVirtEnv(VirtualEnvCreateCmdTest.java:61)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at ......
Caused by: java.io.IOException: error=13, Permission denied
    at java.lang.UNIXProcess.forkAndExec(Native Method)
    at java.lang.UNIXProcess.<init>(UNIXProcess.java:247)
    at java.lang.ProcessImpl.start(ProcessImpl.java:134)
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
    ... 25 more
Run Code Online (Sandbox Code Playgroud)

代码:

public class VirtualEnvCreateCmdTest {

    private final static Logger LOG = LoggerFactory.getLogger(VirtualEnvCreateCmdTest.class);

    private void runCommandInDirectory(String path,String ... command) throws Throwable
    {

        LOG.info("Running command '"+String.join(" ",command)+"' in path '"+path+"'");


        ProcessBuilder builder = new …
Run Code Online (Sandbox Code Playgroud)

java unix bash multithreading processbuilder

3
推荐指数
1
解决办法
1580
查看次数

带星号的 Java ProcessBuilder 命令

此命令从命令行成功运行:

// /home/[user]/testproject/target/dependency/testproj-1.0-SNAPSHOT.jar
~/testproject/target/dependency$ jar -xf *.jar
Run Code Online (Sandbox Code Playgroud)

但是当我尝试通过 ProcessBuilder 运行相同的命令时,我得到:

java.io.FileNotFoundException: *.jar (No such file or directory)
Run Code Online (Sandbox Code Playgroud)

流程构建器代码:

ProcessBuilder builder = new ProcessBuilder("jar", "-xf", "*.jar");
builder.directory("/home/[user]/testproject/target/dependency");
Process process = builder.start();
int exitValue = process.waitFor();
Run Code Online (Sandbox Code Playgroud)

如何使其与命令参数中的“*”一起使用?

java processbuilder

3
推荐指数
1
解决办法
215
查看次数

使用线程和ProcessBuilder

我对使用线程非常不熟悉,所以我希望有人可以帮我找出最好的方法.

我的java应用程序中有一个JButton ...当你点击按钮时,我有一个Process Builder,它创建一个执行一些外部python代码的进程.python代码生成一些文件,这可能需要一些时间.当python代码完成执行时,我需要将这些文件加载​​到我的Java应用程序中的applet中.

在其当前形式中,我在调用外部python文件的代码中有一个p.waitFor()...所以当你单击按钮时,按钮会挂起(整个应用程序实际挂起),直到完成该过程.显然,我希望用户能够在此过程进行时与应用程序的其余部分进行交互,但是一旦完成,我希望我的应用程序知道它,以便它可以将文件加载到applet中.

做这个的最好方式是什么?

谢谢你的帮助.

java multithreading process processbuilder

2
推荐指数
1
解决办法
5962
查看次数

Java - 如何给方法一个数组

我有一个像下面这样的方法:

public void launch(String cmd, String [] args, String workingDir)
Run Code Online (Sandbox Code Playgroud)

在这个方法中,我调用了ProcessBuilder.

如何调用ProcessBuilder,包括我的args参数中包含的任意数量的args?

例如,像这样:

ProcessBuilder pb = new ProcessBuilder(cmd, args);
Run Code Online (Sandbox Code Playgroud)

我注意到ProcessBuilder确实有这个构造函数:

ProcessBuilder(List<String> command) 
Run Code Online (Sandbox Code Playgroud)

也许我可以以某种方式使用它.

java methods processbuilder

2
推荐指数
2
解决办法
781
查看次数

ProcessBuilder不会停止

我试图通过使用Linux下的ProcessBuilder类将mp3文件解码为wav文件.由于某种原因,该过程不会停止,因此我必须手动取消它.

有人可以给我一个暗示.我认为引用的代码很容易重现:

import java.io.*;

public class Test {
 public static void main(String[] args) {
     try {
         Process lameProcess = new ProcessBuilder("lame", "--decode", "test.mp3", "-").start();
         InputStream is = lameProcess.getInputStream();
         FileOutputStream fileOutput = new FileOutputStream("test.wav");
         DataOutputStream dataOutput = new DataOutputStream(fileOutput);


         byte[] buf = new byte[32 * 1024];
         int nRead = 0;
         int counter = 0;
         while((nRead = is.read(buf)) != -1) {
             dataOutput.write(buf, 0, buf.length);
         }

         is.close();
         fileOutput.close();

     }
     catch (Exception e) {
         e.printStackTrace();
     }
 }
}
Run Code Online (Sandbox Code Playgroud)

输出jstack

"main" prio=10 tid=0x0000000002588800 nid=0x247a runnable …
Run Code Online (Sandbox Code Playgroud)

java processbuilder

2
推荐指数
1
解决办法
3209
查看次数

如何使用Process Builder在Java中运行NPM Command

import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.*;

public class TestUnZip {
    public static void main(String[] args) throws IOException, InterruptedException{
        String destFolder="E:\\TestScript";
        /*
        *  Location where the Nodejs Project is Present
        */
        System.out.println(destFolder);

        String cmdPrompt="cmd";
        String path="/c";
        String npmUpdate="npm update";
        String npm="npm";
        String update="update";

        File jsFile=new File(destFolder);
        List<String> updateCommand=new ArrayList<String>();
        updateCommand.add(cmdPrompt);
        updateCommand.add(path);
        updateCommand.add(npmUpdate);

        runExecution(updateCommand,jsFile);

    }
    public static void runExecution(List<String> command, File navigatePath) throws IOException, InterruptedException{

        System.out.println(command); …
Run Code Online (Sandbox Code Playgroud)

java processbuilder node.js npm

2
推荐指数
1
解决办法
4078
查看次数