Tag: processbuilder

无法从java程序执行R脚本?

我在String变量中有一个Rscript,我想从Java程序执行它并将一些变量传递给它。 如果我独立执行该R脚本,它可以正常工作。 我已经通过使用Python程序将其转换为一行来将R脚本转换为一行,如下所示: import json jsonstr = json.dumps({“script”: “””\ #!/usr/bin/Rscript # read the data file library(‘jsonlite’) library(‘rpart’) args <- as.list(Sys.getenv(c( "path", "client_users"))) if (args[["path"]]==""){ args[["path"]] <- "." } # other stuff here # other stuff here """}) print jsonstr 我使用打印出来的字符串并将其存储在String变量中,然后我执行下面的代码,它根本不起作用。 我将path和client_users变量传递给上面的R脚本。 public static void main(String[] args) throws IOException, InterruptedException { // this is your script […]

没有重定向StdOut的Processbuilder

是否可以将输出流重定向回流程,或者根本不重定向? 背景故事:我正在尝试使用processbuilder启动可执行文件。 (确切来源专用服务器/ srcds.exe) 作为使用processbuilder启动它的结果,此可执行文件的控制台窗口保持为空。 启动后几秒钟,可执行文件崩溃并显示错误“CTextConsoleWin32 :: GetLine:!GetNumberOfConsoleInputEvents”,因为它的控制台为空。

如何检查进程是否正在运行

ProcessBuilder pb = new ProcessBuilder(“notepad”); Process p = pb.run(); System.out.println(“Notepad is closed”) 上面的代码运行正常并打开记事本。 但是,在手动关闭记事本窗口之前,不会打印print语句。 这是因为Java等待进程终止。 无论如何我可以打开一个进程并检查窗口是否已加载?

ProcessBuilder无法使用参数运行python脚本

好的,所以我有一个python脚本,我正在通过ProcessBuilder运行。 一切都很好。 我遇到的问题是每当我将参数传递给python脚本时,python脚本都会以一个unrecognized argumets来回应。 但是,如果我采取确切的命令并将其复制并粘贴到命令提示符中,它运行完全正常。 有帮助吗? 以下是我现在所掌握的一般概念: ProcessBuilder builder = new ProcessBuilder(“C:\Python33\” + “python.exe”,”-u”, “C:\…\script.py”, “–arg1 ” + “argumentValue”); p = builder.start();

使用ProcessBuilder在Jar中运行可执行文件

我有一个我构建的应用程序,它使用通过ProcessBuilder调用的非Java可执行文件: ProcessBuilder pb = new ProcessBuilder(invocation); pb.redirectErrorStream(true); Process proc = pb.start(); InputStream is = proc.getInputStream(); InputStreamReader isr = new InputStreamReader(is); BufferedReader br = new BufferedReader(isr); 但是,我想将该应用程序整齐地捆绑到jar文件本身,而不是要求将它放在同一目录之外。 有没有办法运行这个应用程序而不提取它? 如果我需要删除ProcessBuilder,那就没关系,只要它有效。 🙂

ProcessBuilder在收到错误后卡住了

我试图远程执行.bat文件并实现以下代码行: ProcessBuilder processBuilder = new ProcessBuilder(command); final Process process = processBuilder.start(); InputStream stderr = process.getErrorStream(); InputStreamReader isr = new InputStreamReader(stderr); BufferedReader br = new BufferedReader(isr); String line = null; while ((line = br.readLine()) != null) { System.out.println(line); } process.waitFor(); System.out.println(“Waiting …”); System.out.println(“Returned Value :” + process.exitValue()); 但我的程序在循环中陷入困境。 它显示的错误是: CMD.EXE was started with the above path […]

ProcessBuilder在Process可以找不到指定的文件

我试图从Java程序运行一个jar文件,我成功使用getRuntime() : Process processAlgo = Runtime.getRuntime().exec(“java -jar “+algoPath); 但是当我尝试使用ProcessBuilder我得到的The system cannot find the file specifiedexception: ProcessBuilder builder = new ProcessBuilder(“java -jar ” + algoPath); Process processAlgo = builder.start(); 我试图更改指定文件的位置,并指示其完整路径,但它不起作用。 什么可能导致问题?

如何使用一个Java程序来监视另一个Java程序的输出?

下面的图表显示了我正在尝试做的事情:它只是2个程序。 一个是简单的Child ,它每2秒逐行写出整数。 另一个是监视日志文件的Parent程序(只是一个非常基本的文本文件)。 如果日志文件在5秒内没有被修改,那么它应该重启Child (通过批处理文件); 然后继续正常。 我的子类代码在这里: package fileiotestapplication; import java.io.*; import java.io.IOException; import java.util.*; public class WriterClass { @SuppressWarnings(“oracle.jdeveloper.java.insufficient-catch-block”) public WriterClass() { super(); int[] content = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,}; String[] friends = {“bob”,}; File file = new File(“/C:/Java_Scratch/someFile.txt”); // if file […]

通过写入stdout并从stdin读取来传递参数,从Java调用exe

我读过这个问题: Java编程:从Java调用exe并传递参数 这个答案足够好了https://stackoverflow.com/a/5604756/2674303 但我还想将参数传递给外部进程的stdin并从此进程的stdout读取。 我怎样才能做到这一点? 我的努力 : 主要方法: public class ProcessBuilderTest { public static void main(String[] args) throws IOException, InterruptedException { ProcessBuilder pb = new ProcessBuilder(“C:\\Program Files\\Java\\jdk1.8.0_111\\bin\\java”, “-cp”, //class path key “C:\\Users\\redwhite\\IdeaProjects\\HelloMyWorld\\out\\production\\HelloMyWorld” , // path to class file of ExternalProcess class “call_external.ExternalProcess”); // fully qualified name Process process = pb.start(); OutputStream processOutputStream = process.getOutputStream(); IOUtils.write(“1” […]

ProcessBuilder与Runtime.exec()

哪一个更好? 更好的意思是哪一个具有更好的安全性等(不易使用)。