java.io.IOException: Impossible d'exécuter le programme “...”: java.io.IOException: erreur=2, Aucun fichier ou répertoire

J'ai besoin de convertir un fodt fichier à pdf. Après des jours gaspillé à essayer d'utiliser une variété de convertisseurs j'ai réalisé que l'utilisation de libreoffice pourrait faire l'affaire.

/usr/bin/libreoffice --headless --convert-to pdf:'writer_pdf_Export' --outdir /home/develop/tomcat/mf/ROOT/private/docs/0/ /home/develop/tomcat/mf/ROOT/private/docs/0/35_invoice.fodt

Mais ce qui fonctionne parfaitement à partir de la ligne de commande ne fonctionne pas en java...

java.io.IOException: Cannot run program "/usr/bin/libreoffice --headless --convert-to pdf:'writer_pdf_Export' --outdir /home/develop/tomcat/mf/ROOT/private/docs/0 /home/develop/tomcat/mf/ROOT/private/docs/0/35_invoice.fodt": java.io.IOException: error=2, No such file or directory

J'ai suivi de nombreux howtos et des approches différentes, mais les résultats sont toujours les mêmes.

La commande:

"/usr/bin/libreoffice --headless --convert-to pdf:'writer_pdf_Export' --outdir "+ getDestinationDirectory(order)+" "+getInvoiceFilename()+".fodt");

J'ai essayé tous dans une seule Chaîne et diviser en String[] trop. Dans le dernier cas, il se plaint du paramètre:

Unknown option: --convert-to pdf:'writer_pdf_Export' --outdir /home/develop/tomcat/mf/ROOT/private/docs/0 /home/develop/tomcat/mf/ROOT/private/docs/0/35_invoice.fodt

Voici un échantillon de la dernière épreuve

        List<String> command = new ArrayList<String>();
        command.add("/usr/bin/libreoffice");
        command.add("--headless");
        command.add("--convert-to pdf:'writer_pdf_Export' --outdir " + getDestinationDirectory(order) + " " + getInvoiceFilename() + ".fodt");

        ProcessBuilder builder = new ProcessBuilder(command);

        Process process = null;
        try {
            process = builder.start();
        } catch (IOException ex) {
            Logger.getLogger(Documents.class.getName()).log(Level.SEVERE, null, ex);
        }
        InputStream is = process.getInputStream();
        InputStreamReader isr = new InputStreamReader(is);
        BufferedReader br = new BufferedReader(isr);
        String line;
        try {
            while ((line = br.readLine()) != null) {
                System.out.println(line);
            }
        } catch (IOException ex) {
            Logger.getLogger(Documents.class.getName()).log(Level.SEVERE, null, ex);
        }
        System.out.println("Program terminated!");
Cette erreur est typique lorsque le fichier ou le répertoire que vous essayez de déplacer ou de faire quelque chose n'existe pas. Votre commande, est probablement correct, mais, votre fichier ou le chemin d'accès n'est pas arrivé de l'autre côté (chemin d'accès, par exemple).

OriginalL'auteur Azathoth | 2013-05-10