我正在尝试使用 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.tif java.io.IOException:无法运行程序“dmtxread”:java.io.IOException:错误=2,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(Command) 后挂起
当我复制代码打印的命令并在终端上运行它时,它运行正常。
请有这个问题的朋友告诉我。
有没有其他方法可以使用 java 调用此命令?
感谢您!