Java コードを使用して、Linux で Linux 以外のコマンドを呼び出そうとしています。そのコマンドに必要なライブラリは、私の Linux マシンにインストールされています。これは、Runtime.getRuntime().exec(); を使用してコマンドを呼び出す Java コードです。
このコマンドは、画像ファイルから 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) at java.lang.Runtime.exec(Runtime.java:610) at java.lang.Runtime.exec(Runtime.java:483) at Leadertechbarcode.TwoDBarCodeReadHelper.getCodes(TwoDBarCodeReadHelper.java:53) )
次のコード行 p=Runtime.getRuntime.exec(Command) を呼び出した後、プログラムがハングすることがあります。
コードによって出力されたコマンドをコピーして端末で実行すると、正しく実行されます。
この問題で友達を教えてください。
Javaを使用してこのコマンドを呼び出す他の方法はありますか?
ありがとうございます!