Tag: runtime.exec

在eclipse中使用Runtime.getRuntime()。exec

我在eclipse中使用Runtime.getRuntime()。exec从当前程序运行另一个java程序。 我使用了以下代码。 InputStreamReader isr=new InputStreamReader(System.in); BufferedReader br=new BufferedReader(isr); System.out.println(“Enter the class name”); String s=br.readLine(); String str=”XYZ”; String[] cmd = {“java”,”-cp”, “C:/Users/…./workspace/Testing/bin”,s,str}; Process pro=Runtime.getRuntime().exec(cmd); 我也将一个字符串“XYZ”传递给该程序。 该程序只接受字符串并显示 你的字符串是XYZ 但通过使用该线 String [] cmd = {“java”,“ – cp”,“C:/ Users /…./ workspace / Testing / bin”,s,str}; 我能够运行该程序,但它不接受任何参数。 它既不显示输出也不显示任何错误。 我哪里错了? 考虑要调用的程序是 import java.io.*; public class Test { public static void main(String[] […]

从Java启动OpenOffice服务(soffice)的问题(命令行中的命令,但不是Java)

我想要一个简单的命令,它可以从shell运行,但不能用Java运行。 这是我想要执行的命令,工作正常: soffice -headless “-accept=socket,host=localhost,port=8100;urp;” 这是我试图运行此命令从Java中获取的代码: String[] commands = new String[] {“soffice”,”-headless”,”\”-accept=socket,host=localhost,port=8100;urp;\””}; Process process = Runtime.getRuntime().exec(commands) int code = process.waitFor(); if(code == 0) System.out.println(“Commands executed successfully”); 当我运行这个程序时,我得到“命令执行成功”。 但是,当程序完成时,该过程不会运行。 JVM运行后是否有可能杀死程序? 为什么这不起作用?

无法从Runtime.getRunTime.exec()获取getInputStream

public class LinuxInteractor { public static String executeCommand(String command) { System.out.println(“Linux command: ” + command); try { Process p = Runtime.getRuntime().exec(command); p.waitFor(); BufferedReader bf=new BufferedReader(new InputStreamReader( p.getInputStream())); String str=bf.readLine(); System.out.println(“inputStream is::”+str); while( (str=bf.readLine()) != null) { System.out.println(“input stream is::”+str); } System.out.println(“process started”); } catch (Exception e) { System.out.println(“Error occured while executing Linux command. Error Description: […]

如何让java getRuntime()。exec()运行带参数的命令行程序?

我一直在尝试编写一个使用Runtime.getRuntime().exec()方法的java程序来使用命令行来运行程序“tesseract”的实例。 一些背景,Tesseract是一个免费的开源程序,用于在图片上执行OCR(光学字符识别)。 它接收图片文件并输出文本文档。 它是一个使用此命令运行的命令行程序 (从命令提示符shell中) tesseract imageFilePath outFilePath [optional arguments] 例: tesseract “C:\Program Files (x86)\Tesseract-OCR\doc\eurotext.tif” “C:\Users\Dreadnought\Documents\TestingFolder\out” 第一个参数调用tesseract程序,第二个参数是图像文件的绝对路径,最后一个参数是输出文件应该是什么的路径和名称。 Tesseract只需要输出文件的名称,它不需要扩展名。 在命令提示符下工作,这非常有效。 但是,我想从java程序运行它并遇到一些错误。 我发现这个代码作为一个起点非常有用 public class Main { public static void main(String args[]) { try { Runtime rt = Runtime.getRuntime(); String cmdString = “cmd /c dir”; System.out.println(cmdString); Process pr = rt.exec(cmdString); BufferedReader input = new BufferedReader(new InputStreamReader( pr.getInputStream())); […]

Runtime.exec()。waitFor()实际上并没有等待

我有一些代码使用Runtime.exec()来运行外部.jar(构建为IzPack安装程序)。 如果我从命令行运行这个external.jar,如下所示: java -jar external.jar 然后,在应用程序完成之前,命令提示符不会返回控件。 但是,如果我从某个java类中运行external.jar,则使用: Process p = Runtime.getRuntime().exec(“java -jar external.jar”); int exitCode = p.waitFor(); System.out.println(“Process p returned: ” + exitCode); 然后p几乎立即返回,成功代码为0 ,尽管external.jar尚未完成执行(我也通过ProcessBuilder外部文件执行路径尝试了这一点)。 为什么它等待从命令行返回,但是从另一个java程序执行时却没有? 我还设置了3个jar子,A,B和C,其中A调用B调用C(使用Runtime.exec() ),其中C Thread.sleep s为10秒,作为一个简单的测试,并且如预期的那样,A在运行10秒后才返回。 我认为这可能是external.jar的某种线程问题,其中执行是从一件事移交给另一件事,但鉴于它直接从命令行工作,我希望看到相同的行为(也许是天真的)从另一个java程序中调用时。 我已经在Windows和Ubuntu上用Java 6测试了这个。 谢谢!

如何以编程方式检查是否在使用Java的ubuntu上安装了软件实用程序

我正在为自己的学习开发Java项目,我所做的是一个可以使用Runtime.getRuntime().exec(cmd);读写外部进程的类Runtime.getRuntime().exec(cmd); 现在我想知道是否有任何特殊的方法来检查系统上是否安装了特定的软件/工具。 就像我使用sshpass实用程序远程登录到其他机器,如果它不存在我想用我的程序安装它。 但是对于这个我应该如何检查它是否存在? 我在脑海中的想法是运行命令并查看响应,如果返回的字符串与特定表达式匹配,则基于我将决定它是否存在。 你认为这是正确的方法还是有其他方法可以找到这个? 就像在Windows上,我认为有像ftype,assoc等cmdline实用程序,谢谢你,

打开带参数的PDF文件

我正在研究一个基于java的工具,它应该搜索所选目录上的PDF文件,并且应该搜索此PDF文件中的特殊单词/句子。 之后,JList显示适合的文件,双击其中一个条目,PDF Reader(Adobe Reader)应直接在出现单词/句子的页面上打开此文件。 我尝试了两件不同的事情。 的Runtime.exec: try{ Runtime.getRuntime().exec(“rundll32″ + ” ” + “url.dll,FileProtocolHandler /A page=4″ + ” ” + o.toString()); }catch(IOException ex) { ex.printStackTrace(); } 桌面打开: if(Desktop.isDesktopSupported()) { try{ Desktop d = Desktop.getDesktop(); d.open(new File(o.toString())); }catch(IOException ex) { ex.printStackTrace(); } } 有没有办法用“page = 4”之类的参数启动PDF阅读器直接跳到右页? 提前致谢

linux ulimit与java无法正常工作

我在linux ubuntu 17.10上运行代码 public class TestExec { public static void main(String[] args) { try { Process p = Runtime.getRuntime().exec(new String[]{“/bin/sh”, “-c”, “ulimit”, “-n”}); BufferedReader in = new BufferedReader( new InputStreamReader(p.getInputStream())); String line = null; while ((line = in.readLine()) != null) { System.out.println(line); } } catch (IOException e) { e.printStackTrace(); } } } 此代码返回“无限” 但每当我从终端运行命令时,我得到1024。 为什么这些数字不同?

如何一次性从运行时中删除所有进程?

例如: Runtime rt = Runtime.getRuntime(); 创建Runtime rt Process p1 = rt.exec(“C:/Windows/System32/calc.exe”); 在Runtime rt上创建Process p1 。 然后是p1.destroy(); 将破坏Process p1 。 我的问题是:如果我有多个Process (例如p1 , p2和p3 ),我如何一次性销毁它们,而不是逐个销毁它们?

当filename有空格时,运行时exec()不运行命令

我是Java新手并试图将我的一个项目从C转换为Java,以便将它与另一个Java程序结合起来。 当我使用Runtime.exec()时,我很难得到正确的结果。 我有以下程序段和Java忽略来处理给定的命令。 command1 = “mv output/tsk/dir1/metabolic\\ waste.txt output/converted/file16.txt”; r2 = Runtime.getRuntime(); p2 = r2.exec(command1); p2.waitFor(); 这里的问题是文件名“metabolic waste.txt”。 当没有空间时,相同的命令工作。 我知道我必须使用escape char作为空间而且我这样做。 我正在研究Ubuntu btw。 我也试过用 String[] command1 = new String[] {“mv output/tsk/dir1/metabolic\ waste.txt”, “output/converted/file16.txt”; 但它不起作用。 ps给定的代码只是一个例子。 我不仅使用linux mv命令。 我还运行了一些命令行工具,如pdf2txt。 如果文件名中有空格,我仍然遇到运行命令的问题。 解决:我已经解决了我的问题。 我不得不删除转义字符并使用字符串数组是荒谬的。 所以,没有ESCAPE CHARACTER空间。 以下代码仅适用于此示例,更常见。 source_filepath = “output/tsk/dir1/metabolic waste.txt”; dest_filepath = “output/converted/file16.txt”; String[] str2= {“mv”, source_filepath, […]