java - execCMD("cd ~/Desktop/Tmp/Server/ && java -javaagent:lib/Agent.jar -cp ./大创/大创.jar:testcase test.Bank");
问题描述
package test;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Test{
public static void execCMD(String cmd){
StringBuilder result = new StringBuilder();
try {
Process p = Runtime.getRuntime().exec(cmd);
BufferedReader bf = new BufferedReader(new
InputStreamReader(p.getInputStream()));
String line = null;
while((line= bf.readLine())!=null) {
result.append(line+"\n");
}
}catch(Exception e) {
result.delete(0,result.length()-1).append("无效命令");
};
System.out.println(result.toString());
}
public static void main(String[] args) throws IOException {
execCMD("cd ~/Desktop/Tmp/Server/ && java -javaagent:lib/Agent.jar -cp ./Dachuang/dachuang.jar:testcase test.Bank");
}
}
为什么我在控制台上得到空结果?我的意思是也许我不能在一些复杂的命令上执行这个方法。我可以执行(“java --version”)等一些简单的命令。我不知道如何将参数传递给这个方法,我的命令是[ cd ~/Desktop/Tmp/Server/ ] 和[ java -javaagent:lib/Agent.jar -cp ./Dachuang/dachuang.jar:testcase test .银行]。
这是我的屏幕截图: 没有输出
解决方案
Java 不是外壳。您可以使用ProcessBuilder
. 而不是cd
使用directory(File)
. 而System.getProperty("user.home")
不是~
. 就像是
public static void main(String[] args) throws IOException, InterruptedException {
File f = new File(System.getProperty("user.home"), "Desktop/Tmp/Server/");
ProcessBuilder pb = new ProcessBuilder().directory(f);
pb.inheritIO();
pb.command("java", "-javaagent:lib/Agent.jar",
"-cp", "./Dachuang/dachuang.jar:testcase", "test.Bank");
Process p = pb.start();
p.waitFor();
}
推荐阅读
- javascript - .html( ) 内的粗体文本
- python - 从数据 pyspark 中删除控制 - 相当于 PySpark 中的 [[:cntrl:]]
- python - 在python中使用矩形簇进行聚类
- javascript - jQuery.hoverDelay.js 插件未检测到附加元素
- angular - 按下 Return 键时 mat-form-field 的奇怪行为
- javascript - jquery AJAX动态加载图像预览只工作一次
- python - 网络爬虫更新
- powerbi - Power BI - 在网络导航器图表中更改节点颜色
- r - dplyr 中 mutate = case_when 的干净代码
- python - 如何在具有多个独立变量的 pandas 数据帧上运行 OLS 回归?