本文的目的是介绍ProcessBuilder无法使用参数运行python脚本的详细情况,特别关注processing无法使用库的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全
本文的目的是介绍ProcessBuilder无法使用参数运行python脚本的详细情况,特别关注processing无法使用库的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解ProcessBuilder无法使用参数运行python脚本的机会,同时也不会遗漏关于GWT + ProcessBuilder、Java ProcessBuilder process.destroy()不会杀死WinXP中的子进程、Java ProcessBuilder具有多个带空格的参数、Java 使用 Process ProcessBuilder 构建一个子进程执行脚本,脚本的内容是做数据库备份,执行后一直阻塞,导致后面的不执行。的知识。
本文目录一览:- ProcessBuilder无法使用参数运行python脚本(processing无法使用库)
- GWT + ProcessBuilder
- Java ProcessBuilder process.destroy()不会杀死WinXP中的子进程
- Java ProcessBuilder具有多个带空格的参数
- Java 使用 Process ProcessBuilder 构建一个子进程执行脚本,脚本的内容是做数据库备份,执行后一直阻塞,导致后面的不执行。
ProcessBuilder无法使用参数运行python脚本(processing无法使用库)
好的,所以我有一个通过ProcessBuilder运行的python脚本。一切正常。我遇到的问题是,每当我将参数传递到python脚本时,python脚本都会以响应unrecognized
argumets
。但是,如果我采用确切的命令并将其复制并粘贴到命令提示符下,则它运行得很好。有什么帮助吗?这是我现在所拥有的一般想法:
ProcessBuilder builder = new ProcessBuilder("C:\Python33\" + "python.exe","-u","C:\...\script.py","--arg1 " + "argumentValue");
p = builder.start();
GWT + ProcessBuilder
GWT可以使用ProcessBuilder吗?当我声明一个新的ProcessBuilder的实例时,我得到:
java.lang.ProcessBuilder is not supported by Google App Engine''s Java runtime environment
答案1
小编典典您的问题是有关GWT支持ProcessBuilder的,但您遇到的错误是来自Google App Engine,而不是与GWT有关。
如果您通过GWT RPC方法使用ProcessBuilder,则应该没有任何问题。但是,您将Google App
Engine用作应用程序服务器。Google App Engine不支持ProcessBuilder,GAE不支持许多其他功能。
看看它会在Google App Engine中播放吗?作为参考,以了解GAE是否支持您的特定功能。
请务必注意, Google App Engine 不支持ProcessBuilder
。GWT在RPC中使用常规Java,因此可以在其中使用ProcessBuilder。
Java ProcessBuilder process.destroy()不会杀死WinXP中的子进程
我有一个Java应用程序,用于ProcessBuilder
准备操作系统命令并给我一个Process
对象。(实际的os命令是使用cygwin在ssh上进行rsync的)。
这在Windows中运行良好,但是,如果我想停止使用process.destroy()
它的进程将不会杀死子ssh和rsync进程……..我必须使用Windows任务管理器手动将其杀死。
是否有可能OutputStream
在我打电话之前以某种方式获取该进程的信息并发送ctrl-c destroy();
?
如果有人对解决方法有任何想法,那就太好了。感谢:D
答案1
小编典典我还认为模拟Ctrl-C以完全杀死ssh是有问题的。
我会做的是以下方法之一。可以使用Windows命令找出谁是ssh的儿子(这有点麻烦,因为您需要知道当前的pid才能接收自己的子进程)。我相信sysinternals的pstools是一个很好的命令行工具,应该可以使您跟踪孤立进程。请参阅此示例,以控制Windows进程taskList.exe
(使用可以通过BTW以CSV格式提供输出)或执行特殊的VBScript。
第二种方法是使用Java库(例如winp)来执行和控制ssh进程。我相信您可以列出所有子级,并在发送正确消息不够时强行杀死他们。这将是我的首选方法。请注意,killRecursively方法完全可以满足您的需求。
请注意,这些方法不应仅呈现应用程序窗口。您可以将它们封装在可以在Windows和linux计算机上不同地运行的类中。
请注意,我没有尝试对Windows进程进行细粒度的控制,所以我不确定我找到的那些解决方案有多成熟。
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","D:\\PostgreSQL 8.2\\bin\\pg_dump.exe","D:\\backup test\\backups\\test_27-1-2013_210.backup","test"});
ProcessBuilder probuilder = new ProcessBuilder(new String[]{"cmd","\"D:\\PostgreSQL 8.2\\bin\\pg_dump.exe\"","\"D:\\backup test\\backups\\test_27-1-2013_210.backup\"","test"});
Map<String,String> 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 batch file.
仅当备份文件的路径包含空格时才出现问题,否则将创建备份。我试图在文件路径中同时使用斜杠和反斜杠,但我引用了文件路径,但每次都遇到相同的错误。可以从命令提示符处执行命令。
我做错了。关于ProcessBuilder中带空格的参数数量是否有一些限制。谢谢
Java 使用 Process ProcessBuilder 构建一个子进程执行脚本,脚本的内容是做数据库备份,执行后一直阻塞,导致后面的不执行。
package com.snackpub.task.oraclebakup; import lombok.extern.slf4j.Slf4j; import java.io.BufferedReader; import java.io.File; import java.io.InputStreamReader; import java.nio.charset.Charset; @Slf4j public class OSExecuteThreadTest { public void command(String command, String workDir) { boolean err = false; try { Process process = new ProcessBuilder(command.split(" ")).directory(new File(workDir)).start(); BufferedReader results = new BufferedReader( new InputStreamReader(process.getInputStream())); String s; while ((s = results.readLine()) != null) log.info(s); // 这里执行完后就一直阻塞了. 导致下面的不会执行,是否只能通过多线程来解决. BufferedReader errors = new BufferedReader( new InputStreamReader(process.getErrorStream(), Charset.defaultCharset())); System.out.println(process.isAlive()); // Report errors and return nonzero value // to calling process if there are problems: while ((s = errors.readLine()) != null) { log.error(s); err = true; } } catch (Exception e) { // Compensate for Windows 2000, which throws an // exception for the default command line: if (!command.startsWith("CMD /C")) command("CMD /C " + command, workDir); else throw new RuntimeException(e); } if (err) throw new OSExecuteException("Errors executing " + command); else log.info(command + ",backup succeeded."); } }
关于ProcessBuilder无法使用参数运行python脚本和processing无法使用库的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于GWT + ProcessBuilder、Java ProcessBuilder process.destroy()不会杀死WinXP中的子进程、Java ProcessBuilder具有多个带空格的参数、Java 使用 Process ProcessBuilder 构建一个子进程执行脚本,脚本的内容是做数据库备份,执行后一直阻塞,导致后面的不执行。等相关知识的信息别忘了在本站进行查找喔。
本文标签: