java Runtime.exec() 执行问题

Runtime.exec() 不等同于直接执行command line命令!

Runtime.exec()很有局限性,对有些命令不能直接把command line里的内容当作String参数传给exec().

比如重定向等命令。举个例子:

javap -l xxx > output.txt

这时要用到exec的第二种重载,即input 参数为String[]:

Process p = Runtime.getRuntime().exec(new String[]{"/bin/sh","-c","javap -l xxx > output.txt"});

rm -rf name*

Process p = Runtime.getRuntime().exec(new String[]{"/bin/sh","-c","rm -rf name*"});

时间: 2024-07-31 14:31:29

java Runtime.exec() 执行问题的相关文章

Java Runtime.exec()的使用

Sun的doc里其实说明还有其他的用法: exec(String[] cmdarray, String[] envp, File dir) Executes the specified command and arguments in a separate process with the specified environment and working directory. 那个dir就是调用的程序的工作目录,这句其实还是很有用的. Windows下调用程序 Process proc =Ru

64位xp上java Runtime.exec无法正常运行的问题

有一段简单的java代码如下 package com.dongjak.test; import java.io.IOException; public class Test { public static void main(String[] args) { // ProcessUtils.shutdown(1); Runtime runtime = Runtime.getRuntime(); try { runtime.exec("shutdown -f -s -t 1"); } c

[Java] Runtime Exec

经常用到Runtime的exec方法,记录一下标准用法,便于以后复制代码. Process process; String cmd = "cat /sys/devices/virtual/mxc_edid_class/mxc_edid_dev/timing"; StringBuffer sb = new StringBuffer(""); try { process = Runtime.getRuntime().exec("su"); Strin

Java Runtime.getRuntime().exec 执行带空格命令解决办法

String command = OpenOffice_HOME + "program\\soffice -headless -accept=\"socket,host=127.0.0.1,port=8100;urp;\" -nofirststartwizard "; command = "cmd /c start "+command.replaceAll(" ","\" \""); P

Runtime.getRuntime.exec()执行linux脚本导致程序卡死有关问题

Runtime.getRuntime.exec()执行linux脚本导致程序卡死问题问题: 在Java程序中,通过Runtime.getRuntime().exec()执行一个Linux脚本导致程序被挂住,而在终端上直接执行这个脚本则没有任何问题.原因: 先来看Java代码: public final static void process1(String[] cmdarray) {        Process p = null;        BufferedReader br = null

BufferedWriter.write()与BufferedReader.readLine() (附带Java中的Runtime exec)

昨天在实现一个Java程序启动执行C++程序中,遇到了一些问题,先准备把它记录下来(利人利己) 准备实现的测试功能是这样的:在一个java程序中启动一个C++可执行程序,然后java程序和C++程序相互通信(java端发送消息给C++程序处理,C++处理完成后将返回一个结果消息给java程序.不断往返循环直至输入exit指令结束). 首先,在一个java程序中启动一个C++可执行程序 使用的是java的Runtime.getRuntime().exec(),Process类exec()官方说明 

[转]Java中Runtime.exec的一些事

0 预备知识 1 不正确的调用exitValue 2不正确的调用waitFor 3 一种可接受的调用方式 4 调用认为是可执行程序的时候容易发生的错误 5 window执行的良好示例 6 不良好的重定向命令输出 7 良好的重定向输出示例 8 总结 9 问答 0 预备知识 Runtime类是一个与JVM运行时环境有关的Singleton类,有以下几个值得注意的地方: 0.1 Runtime.getRuntime()可以取得当前JVM的运行时环境,这也是在Java中唯一得到运行时环境的方法. 0.2

Java Runtime 执行系统命令行程序

以前写过一篇文章,介绍通过 Java 的 Runtime 类执行操作系统命令行程序:Java调用linux系统shell执行命令.最近项目中又有需要用这个方法,在使用过程中遇到了一些新的问题,感觉以前没有弄清楚,故在此做补充学习记录. 先说明一下这次的需求,在 Java 程序中控制 Hadoop 命令执行 MapReduce 作业,并获取其输出内容.本来没有什么特殊,但由于 MR 执行的是 Kmeans 算法,会产递归产生多个 MR 程序,在捕获输出的时候就只有简单的几句提示,没有 MR 作业的

Java魔法堂:找外援的利器——Runtime.exec详解

一.前言 Java虽然五脏俱全但总有软肋,譬如获取CPU等硬件信息,当然我们可以通过JNI调用C/C++来获取,但对于对C/C++和Windows API不熟的码农是一系列复杂的学习和踩坑过程.那能不能通过简单一些.学习成本低一些的方式呢?答案是肯定的,在功能实现放在首位的情况下,借他山之石是最简洁有力的做法.而 Runtime.exec方法 就为我们打开这么的一条路了. 二.认识 java.lang.Runtime.exec方法    作用:用于调用外部程序,并重定向外部程序的标准输入.标准输