gpt4 book ai didi

java - 如何从Java代码运行Linux程序

转载 作者:太空宇宙 更新时间:2023-11-04 07:44:27 24 4
gpt4 key购买 nike

我正在尝试使用 qemu-img 从 Java 代码创建磁盘空间,因此我实例化了进程和运行时类。运行程序时,命令没有执行,尽管我使用相同的机制进行类似的执行并且工作正常。所以我想知道我是否错过了这里的一些东西。

StringBuilder commandBuilder = new StringBuilder("qemu-img create -f "+chosenStorageType+" ~/"+storageName+".img "+storageSize+"M");
System.out.println(commandBuilder);
String command = commandBuilder.toString();
System.out.println("this is the correct one: "+command);

System.out.println("Creating the image...");
Runtime runtime = Runtime.getRuntime();
Process process = null;
try {
process = runtime.exec(command);
System.out.println("from process try..catch");
} catch (IOException e1) {
e1.printStackTrace();
System.out.println(e1.getMessage());
}finally{
System.out.println("from finally entry");
process.destroy();
}

输出如下:

qemu-img create -f raw ~/testSPACE.img 23.0M

this is the correct one: /qemu-img create -f raw ~/testSPACE.img 23.0M
Creating the image...
from process try..catch
from finally entry

但是如果我进入该目录,则不会创建该文件。

只是为了测试它,如果我将输出复制到终端,一切都会像魅力一样工作。

最佳答案

此处的波形符 (~)

" ~/"+storageName+".img "

被 shell 解释为您的主目录。我会替换真实的路径。

另请注意,您需要是 consuming the process stdout/err ,并通过 Process.waitFor() 收集进程的错误代码(并检查它!)

关于java - 如何从Java代码运行Linux程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15544386/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com