gpt4 book ai didi

java - Linux 命令没有给出在 java 程序中调用的输出

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:27:00 25 4
gpt4 key购买 nike

我正在尝试使用 Java 代码在 Linux 上调用非 Linux 命令。该命令所需的库安装在我的 Linux 机器上。这是我的 Java 代码,它使用 Runtime.getRuntime().exec(); 调用命令;

该命令从图像文件中读取 borcode 并将其解码并在控制台上显示值。

import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
public class demo {
public static void main(String args[]){
getcodes();
}
public void getCodes(){
try
{
Process p;
String command[]=new String[3];
command[0]="dmtxread ";
command[1]="-n ";
command[2]="/home/administrator/sandip/xyz.tif";
System.out.println("Command : "+command[0]+command[1]+command[2]);
p=Runtime.getRuntime().exec(command);

System.out.println(p.waitFor());
BufferedReader reader=new BufferedReader(new InputStreamReader(p.getInputStream()));
String line=reader.readLine();
System.out.print("Decoded :- "+line);
}
}catch(IOException e1) {
e1.getMessage();
e1.printStackTrace();
}catch(InterruptedException e2) {
e2.getMessage();
e2.printStackTrace();
}
}
}

当我在 linux 上运行此 java 代码时,出现以下异常

部分异常如下:

命令:dmtxread -n/home/administrator/sandip/xyz.tifjava.io.IOException: 无法运行程序“dmtxread”: java.io.IOException: error=2, No such file or directory在 java.lang.ProcessBuilder.start(ProcessBuilder.java:475)在 java.lang.Runtime.exec(Runtime.java:610)在 java.lang.Runtime.exec(Runtime.java:483)在 leadertechbarcode.TwoDBarCodeReadHelper.getCodes(TwoDBarCodeReadHelper.java:53)

有时程序会在调用以下代码行后挂起p=Runtime.getRuntime.exec(命令)

当我复制代码打印的命令并在终端上运行它时,它运行正常。

有这个问题的 friend 请告诉我

有没有其他方法可以使用 java 调用此命令?

谢谢!

最佳答案

您正在使用的 Runtime.exec(String[]) 方法要求第一个元素是命令,随后的元素是单独的参数。因此,如果其中有任何空格,它们将在传递给底层操作系统之前被转义或引用。

在您的例子中,command[0] 包含命令名称后跟一个空格。这将导致系统搜索并执行名称中包含该空格的命令。这个找不到。

要解决此问题,您应该删除 command 中每个元素内容周围的空格,或者您可以手动连接它们并将它们作为单个字符串传递给 Runtime.exec(String) 方法代替。请注意,您的“-n”参数后面还有一个空格。您可能还需要删除那个。

关于java - Linux 命令没有给出在 java 程序中调用的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10498153/

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