Tag: processbuilder

ProcessBuilder重定向到标准输出

我想将java进程输出重定向到父java进程的标准输出。 使用ProcessBuilder类如下: public static void main(String[] args) { ProcessBuilder processBuilder = new ProcessBuilder(“cmd”); processBuilder.directory(new File(“C:”)); processBuilder.redirectErrorStream(true); // redirect error stream to output stream processBuilder.redirectOutput(ProcessBuilder.Redirect.INHERIT); } 我原以为“cmd”的输出,如: Microsoft Windows [版本6.1.7601]版权所有(c)2009 Microsoft Corporation。 Tousdroitsréservés。 显示在用于运行java程序的DOS控制台中。 但是在DOS控制台中根本没有显示任何内容。 在讨论的其他主题中,我看到了使用BufferedReader类的解决方案:但是在这里我希望过程的输出直接显示在标准输出中,而不使用任何BufferedReader或“while read loop”。 可能吗? 谢谢。

远程执行批处理文件java

我想在服务器\\testserver\someFolderName\test.bat上远程执行一个bat文件。 我正在使用流程构建器,并希望使用procbuilder.directory(….),来链接目录procbuilder.directory(….),但无法成功。 任何帮助表示赞赏。 谢谢

从另一个Java程序编译和运行Java程序

使用CompileAndRun类,我现在可以编译并运行我的HelloWorld类。 现在我想用它来运行一个需要用户输入的程序。 这可以是命令行参数或通过stdin接收的输入。 import java.io.File; import java.io.IOException; import java.io.InputStream; public class CompileAndRun { public static void main(String[] args) { new CompileAndRun(); } public CompileAndRun() { try { int result = compile(“compileandrun/HelloWorld.java”); System.out.println(“javac returned ” + result); result = run(“compileandrun.HelloWorld”); } catch (IOException | InterruptedException ex) { ex.printStackTrace(); } } public int run(String clazz) throws IOException, […]

GWT + ProcessBuilder

是否可以将ProcessBuilder与GWT一起使用? 当我声明一个新的ProcessBuilder的实例时,我得到: java.lang.ProcessBuilder is not supported by Google App Engine’s Java runtime environment

如何让JButton在同一目录中运行可执行文件?

好的,我正在尝试让我的JButton在不同的目录中运行一个可执行文件。 它是我编写的以前的控制台应用程序,我希望此按钮运行可执行文件。 我是Java编程语言的新手,但这是我的代码。 import java.util.*; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.IOException; public class main { public static void main(final String[] args) throws IOException { JFrame f = new JFrame(“Test”); f.setVisible(true); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setSize(500, 500); JPanel p = new JPanel(); JButton b1 = new JButton(“Calculate”); f.add(p); p.add(b1); Process proce = Runtime.getRuntime().exec(“C:/Ctest.exe”); } private […]

使用流程构建器执行两个命令

我正在尝试编写一个程序,从命令提示符编译另一个java文件。 但是我遇到了问题。 此时,它正在成功执行编译Mocha.java的第一部分。 但是,我希望它也执行该文件并显示它输出的内容。 它什么也没显示。 有什么建议? pb = new ProcessBuilder(“javac”,”Mocha.java”); try { Process shell = pb.start(); OutputStream shellOut = shell.getOutputStream(); shellOut.write(“java Mocha”.getBytes()); shellOut.close(); InputStream shellIn = shell.getInputStream(); String response = IOUtils.toString(shellIn, “UTF-8”); System.out.println(response); shellIn.close(); shell.destroy(); } catch (IOException ex) { System.out.println(“failed”); } 注意: 我也尝试将所有参数初始化为: pb = new ProcessBuilder(“javac”,”Mocha.java”,”&&”,”java”,”Mocha”); 但这不仅不起作用,甚至没有像上面那样编译Mocha.java。 谢谢! 编辑: 所以我把它改成了两个进程。 现在很棒! 对任何感兴趣的人 pb […]

使用ProcessBuilder使用命令行选项执行python脚本

为了从Java执行python脚本(它有几个命令行参数),我试图使用的是以下java代码 String[] command = {“script.py”, “run”, “-arg1”, “val1”, “-arg2”, “val2” , “-arg3” , “val_31 val_32”, }; ProcessBuilder probuilder = new ProcessBuilder( command ); Process process = probuilder.start(); 例如,我打算执行以下命令: ./script.py run -arg1 val1 -arg2 val2 -arg3 val_31 val_32 请注意,参数arg3采用参数值列表。 我面临的问题是我没有找到将值列表传递给参数arg3的方法。 如果有人能给我一些提示来解决我的问题,我真的很感激。 我已经进行了搜索,但找不到合适的答案,如果有人找到正确的链接,请告诉我。 最好!

使用Java中的ProcessBuilder将进程的输出重定向到另一个进程的输入

我有两个由processBuilders定义的进程: ProcessBuilder pb1 = new ProcessBuilder (…) ProcessBuilder pb2 = new ProcessBuilder (…) 我希望pb1的输出成为pb1的输入。 我在文档中发现我可以通过使用管道从另一个进程读取pb2的输入: pb2.redirectInput(Redirect.PIPE); 但是,如何指定我希望此管道从pb1的输出中pb1 ?

带有多个带空格的参数的Java ProcessBuilder

我知道有很多关于从java执行进程的问题。但我无法使用提供的答案来解决我的问题。 我正在尝试从java应用程序创建postgresql数据库备份。 我使用以下代码 //ProcessBuilder probuilder = new ProcessBuilder(new String[]{“cmd”,”/c”,”D:/PostgreSQL 8.2/bin/pg_dump.exe”,”-U”,”usr”,”-i”,”-h”,”localhost”,”-p”,”5432″,”-F”,”c”,”-b”,”-f”,”D:/backup test/backups/test_27-1-2013_210.backup”, “test”}); //ProcessBuilder probuilder = new ProcessBuilder(new String[]{“cmd”,”/c”,”D:\\PostgreSQL 8.2\\bin\\pg_dump.exe”,”-U”,”usr”,”-i”,”-h”,”localhost”,”-p”,”5432″,”-F”,”c”,”-b”,”-f”,”D:\\backup test\\backups\\test_27-1-2013_210.backup”, “test”}); ProcessBuilder probuilder = new ProcessBuilder(new String[]{“cmd”,”/c”,”\”D:\\PostgreSQL 8.2\\bin\\pg_dump.exe\””,”-U”,”usr”,”-i”,”-h”,”localhost”,”-p”,”5432″,”-F”,”c”,”-b”,”-f”,”\”D:\\backup test\\backups\\test_27-1-2013_210.backup\””, “test”}); Map env = probuilder.environment(); env.put(“PGPASSWORD”, “mypass”); final Process process = probuilder.start(); 执行上面的代码后,我得到以下错误: D:\PostgreSQL’ is not recognized as an internal or external command, operable program or […]

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; […]