Tag: processbuilder

如何通过swing GUI打开任何命令行程序并将命令传递给它?

我基本上想要使用Swing将命令行程序转换为gui程序。 一旦用户按下适当的按钮,GUI就应该将相应的命令传递给命令行程序。 如果我们可以在不显示命令行程序的情况下执行此操作,那么它将完全取代该程序。 我一直试图在互联网上搜索这两天,我只发现Runtime.getRuntime()。exec(cmd)命令对打开命令提示符并打开命令行程序很有用,但是命令可以不再传递给提示,不能对该程序进行进一步的操作。 请帮忙。

通过ProcessBuilder运行脚本后,在java中收集环境变量

为什么以下代码打印为false? 我正在尝试test.sh脚本中的环境变量并在java中收集它。 如果可能,请建议替代方法。 public static void main(String[] args){ ProcessBuilder processBuilder = new ProcessBuilder(“test.sh”); Process process; int exitCode; try { process = processBuilder.start(); exitCode = process.waitFor(); } catch (IOException e) { e.printStackTrace(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } MapenvVars = processBuilder.environment(); System.out.println(envVars.keySet().contains(“SOURCE”)); } 而test.sh脚本的代码很简单 set SOURCE=source

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

我hava命令行处理超过5分钟。 当我使用ProcessBuilder调用命令行时,它可以在5分钟内完成作业。 如果流程耗时超过5分钟并且流程没有改进,直到我退出流程,流程就会挂起。 p = new ProcessBuilder(“myprogram”,”with”,”parameter”).start(); p.waitFor(); 如果您不理解上述问题,请告诉我?

一段时间后,随着ProcessBuilder阻止了Java应用程序

我正在开发一个包含3个按钮的Java桌面应用程序(让我们称之为控制台):其中两个启动Win32应用程序; 第三个应该启动一个可执行jar: ProcessBuilder pb = new ProcessBuilder(“java”, “-jar”, testDrivePath); Process process = pb.start(); 其中testDrivePath是jar的路径(类似于“C:\ Programs \ TestDrive.jar”) TestDrive.jar应用程序正确启动,但一段时间后它会阻塞并无法进行任何操作。 如果我关闭控制台,TestDrive.jar又恢复工作了! 如果我单独启动TestDrive.jar(不从控制台调用它),一切都是正确的。 任何人都可以建议吗?

如何通过Java swing执行cmd命令

我有一个要打印的文件,我想通过java swing向他发送自定义水印。 我有2个文件NewJFrame.java和Test.java package test; import java.io.IOException; import java.io.OutputStream; /** * * @author shaharnakash */ public class NewJFrame extends javax.swing.JFrame { /** * Creates new form NewJFrame */ public NewJFrame() { initComponents(); } /** * This method is called from within the constructor to initialize the form. * WARNING: Do NOT modify this code. The […]

无法使用Java ProcessBuilder启动带有参数的shell脚本

我正在尝试使用ProcessBuilder使用命令行参数执行shell脚本,此shell脚本调用另外两个使用此参数的shell脚本。 第一个shell脚本运行正常,但是当第二个脚本启动时它返回退出代码1。 Java程序的ProcessBuilder片段: //scenario – A string that holds a numerical value like 1 or 2 etc String[] command2 = {“/bin/bash”, “/runTemporaryTestSuite.sh”, scenario}; ProcessBuilder pb2 = new ProcessBuilder(command2); Process p2 = pb2.start(); BufferedReader br = new BufferedReader(new InputStreamReader(p2.getInputStream())); String line; //print – is an object ref of response.getWriter() // print.println(“Output of running “+Arrays.toString(command2)+” is: “); […]

使用流程构建器或apache commons exec执行外部程序

我需要执行一个外部应用程序,它返回大量数据(需要2个多小时才能完成)并连续输出数据。 我需要做的是异步执行该程序并捕获文件中的输出。 我尝试使用java进程构建器,但它似乎挂起并仅在程序退出或强制终止时返回输出。 我尝试使用进程构建器并spwaned一个新的线程来捕获输出,但它仍然没有帮助。 然后我读了关于apache commons exec并尝试了同样的事情。 然而,这似乎也需要很长时间并返回不同的错误代码(对于相同的输入) CommandLine cmdLine = new CommandLine(“/opt/testsimulator”); DefaultExecuteResultHandler resultHandler = new DefaultExecuteResultHandler(); ByteArrayOutputStream stdout = new ByteArrayOutputStream(); PumpStreamHandler psh = new PumpStreamHandler(stdout); ExecuteWatchdog watchdog = new ExecuteWatchdog(60*1000); Executor executor = new DefaultExecutor(); executor.setStreamHandler(psh); executor.setWatchdog(watchdog); try { executor.execute(cmdLine); } catch (ExecuteException e) { // TODO Auto-generated catch block e.printStackTrace(); } […]

使用processbuilder从java执行curl

我正在java中编写测试程序来测试我与django中的restfull api的连接(精确地说是djangorestframework)。 其中一个选择是用curl测试api。 从shell运行curl命令它工作正常:例如: curl –show-error –request GET –header ‘Accept: application/json’ –user “user:pwd” http://127.0.0.1:8000/api/v1/ 这将以json格式很好地返回api根URL和helptext。 现在,当我尝试使用ProcessBuilder从java调用相同的内容时,我得到了这样的答案: {“detail”: “You do not have permission to access this resource. You may need to login or otherwise authenticate the request.”} 我使用的java代码是: ProcessBuilder p=new ProcessBuilder(“curl”,”–show-error”, “–request”,”GET”, “–header”,”‘Accept: application/json'”, “–user”,”\”” + userName + “:” + password + “\””, getApiRootUrlString()); final Process […]

如何在Windows中的ProcessBuilder java中设置PATH环境变量

我试图在java中为进程构建器设置PATH环境变量,我尝试了以下方法: ProcessBuilder pb = new ProcessBuilder(command); Map mp = pb.environment(); mp.put(“Path”, “myPath”); pb.start(); 但是以下不起作用,进程构建器选择了默认的系统路径。 我遇到了这个问题 ,这个技巧在我目前的项目中没有帮助我。 我该怎么办才能解决这个问题?

如何使用Java Process Builder执行需要多个输入的批处理脚本?

我有一个批处理脚本,它将输入作为用户名和年龄,并打印输入。 我想编写一个java程序来执行该脚本并传递输入。 我用ProcessBuilder编写了java程序。 我也在OutputStream过程中传递用户名和年龄,但只打印用户名并且缺少年龄。 我的脚本(test.bat文件): @echo off echo executing test.bat set /p name=Enter Name: set /p age=Enter Age : echo Hi %name%, you are %age% years old. 我的java程序: private static void executeInteractiveCommand(String cmd,String … args){ try{ List command = new ArrayList(); command.add(cmd); ProcessBuilder builder = new ProcessBuilder(command); Map environ = builder.environment(); final Process process = […]