L'exécution d'un Script Shell De Répertoire Externe: Aucun fichier ou répertoire

J'ai un script shell fichiers que je veux courir à partir de java. Mon java de l'espace de travail de répertoire est différent de celui du script d'annuaire.

private final String scriptPath = "/home/kemallin/Desktop/";

public void cleanCSVScript() {

    String script = "clean.sh";
    try {
        Process awk = new ProcessBuilder(scriptPath + script).start();
        awk.waitFor();
    } catch (IOException e) {
        //TODO Auto-generated catch block
        e.printStackTrace();
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}

et j'obtiens cette erreur:

java.io.IOException: Cannot run program "cat /home/kemallin/Desktop/capture-03.csv | awk -F ',' '{ print $1,",", $2,",", $3,",", $4,",", $6}' > clean.csv": error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1047)
at ShellScript.cleanCSVScript(ShellScript.java:21)
at Main.main(Main.java:15)
Caused by: java.io.IOException: error=2, No such file or directory
at java.lang.UNIXProcess.forkAndExec(Native Method)
at java.lang.UNIXProcess.<init>(UNIXProcess.java:186)
at java.lang.ProcessImpl.start(ProcessImpl.java:130)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1028)
... 2 more
java.io.FileNotFoundException: /home/kemallin/Desktop/clean.csv (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:146)
at java.io.FileInputStream.<init>(FileInputStream.java:101)
at java.io.FileReader.<init>(FileReader.java:58)
at CSVReader.run(CSVReader.java:25)
at Main.main(Main.java:17)

J'ai googlé et chaque solution assez bien indiquer que je suis en train de faire la bonne chose.

J'ai essayé de mettre le fichier de script dans le répertoire src et dans la corbeille du projet en Java mais il dit aucun fichier ou dir.

Ce que je fais mal?

Grâce.

java est d'essayer d'exécuter l'ENSEMBLE de votre ligne de commande en une seule commande. La chaîne cat /home/... n'est pas un programme, cat est, et le reste est un argument pour le chat.
Marc B est probablement vrai, et je ne suis pas un java mec, alors que je serais probablement faire est de vérifier les autorisations pour /home/kemallin/Desktop/capture-03.csv et /home/kemallin/Desktop/clean.sh. Assurez-vous que l'utilisateur qui exécute le programme java d'avoir accès à ces fichiers (a+rwx si vous voulez juste jeter un problème d'autorisations... si c'est le cas, alors vous pouvez travailler à partir de là)
Je pense que votre erreur de sortie ne correspond pas au code java montré. Dans le code Java de l'exécution de la commande "/home/kemallin/Desktop/clean.sh" mais dans la sortie d'erreur apparaît "cat /home/kemallin/Desktop/capture-03.csv | awk..." et "/home/kemallin/Desktop/nettoyer.csv" 🙁
alors, que proposez-vous? Que je devrais briser le script shell?
clean.sh a 755, l'utilisateur qui exécute le programme java est propriétaire de l'clean.sh l'accès ne devrait pas être un problème, est-ce exact?

OriginalL'auteur ickarsim | 2014-09-03