Java不会执行cmd行?

标签 java shell cmd

我尝试在 java 中运行这个 shell,但它从来没有工作过。

Process p = Runtime.getRuntime().exec(" cat *.java|sed '/import/d'|sed'/package/d'>>b.java ");

当我将 cmd 更改为“ls”或“open foo.java”之类的内容时,代码将起作用。

知道为什么吗?

最佳答案

问题是文件通配符模式没有通过 glob 扩展。 。因此,该模式按字面意思处理,并且找不到该文件。您需要一个诸如 bash 之类的 shell 来解释此内容:

Process p = Runtime.getRuntime().exec(new String[] { 
                   "bash", "-c", 
                   "cat *.java|sed '/import/d'|sed'/package/d'>>b.java" });

请务必检查 getErrorStream 的内容.

旁白:考虑使用更方便的 ProcessBuilder它使用可变参数数组来构建命令String

关于Java不会执行cmd行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16227418/

相关文章:

bash - 使 bash 中的命令超时,避免不必要的延迟

python.ext 没有名为 pip 的模块

java - 坐标不对应

java - 将 map 复制到另一个新 map

java - 从十六进制字符串 key 格式生成 RSA 私钥

linux - 如何在 zip 命令中保留子文件夹

linux - FTP命令将目录从本地系统放到服务器

windows - 如何在cmd中调用嵌套程序

mysql - 将 .sql 文件批处理文件导入到 mariadb 失败

java - 使用 PowerMockito 模拟并验证同一类中的 2 个方法 public static void 和 public static boolean