Linux Command no está dando una salida invocada en el programa java

Estoy tratando de invocar el comando no linux en linux usando el código java. Las bibliotecas necesarias para ese comando están instaladas en mi máquina Linux. Aquí está mi código java que invoca el comando usando Runtime.getRuntime (). Exec ();

El comando lee el código de bor del archivo de imagen y lo decodifica y muestra el valor en la consola.

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();
        } 
    }
}

Como cuando ejecuto este código Java en Linux obtengo la siguiente excepción

Parte de la excepción es la siguiente:

Comando: dmtxread -n /home/administrator/sandip/xyz.tif java.io.IOException: No se puede ejecutar el programa "dmtxread": java.io.IOException: error = 2, No existe dicho archivo o directorio en java.lang.ProcessBuilder. iniciar (ProcessBuilder.java:475) en java.lang.Runtime.exec (Runtime.java:610) en java.lang.Runtime.exec (Runtime.java:483) en leadertechbarcode.TwoDBarCodeReadHelper.getCodes (TwoDBarCodeReadHelper.java )

Algunas veces el programa se bloquea después de invocar la siguiente línea de código p = Runtime.getRuntime.exec (Comando)

cuando copio el comando impreso por el código y lo ejecuto en la terminal, se ejecuta correctamente.

Por favor dime amigos en este problema.

¿Hay alguna otra forma de invocar este comando usando java?

¡Gracias!

Respuesta 1

Necesito hacer unas 15 llamadas a diferentes servicios web (php) al inicio de la aplicación. Estoy usando el siguiente código para la publicación pública de String estática (URL de cadena, List <BasicNameValuePair> ...

I Buscando un método que convierta la cadena de tiempo en Calendario se parece a esto: Calendario estático público stringToCalendar (String strDate, TimeZone timezone) {String FORMAT_DATETIME = "aaaa-MM-dd'T '...

Estoy creando una aplicación web usando Spring e hibernate. Estoy un poco confundido sobre el enfoque de la estructura de directorios. Enfoque 1: Crear una carpeta / paquete separado para cada módulo. ...

Tengo un problema al analizar cuando uso HTTPGET, especialmente el manejo de TIMEOUT y obtengo respuesta a través de HttpResponse y passto xmlR.parse (nuevo InputSource (instream)); y hacer el procedimiento de descanso. Pero hay ...