запустить команду linux из java - PullRequest
1 голос
/ 26 марта 2020

я пытался запустить команду linux из файла jar , но всегда получаю эту ошибку:

java .io.IOException: не удается запустить программу "ls": ошибка = 13, В доступе отказано.

вот мой код:

String s;
    Process p;
    String cmd= "ls";

    try {
        Runtime run = Runtime.getRuntime();
        p = run.exec(cmd);
        BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));

        while ((s = br.readLine()) != null){
        System.out.println("line: " + s);
        }

        p.waitFor();
        System.out.println ("exit: " + p.exitValue());
        p.destroy();

    } catch (Exception e) {
        System.out.println(e);
    }

спасибо за ваше время.

ОБНОВЛЕНИЕ : Для меня мое решение это: мне пришлось переустановить мою ОС и JDK, все работает сейчас.

1 Ответ

2 голосов
/ 28 марта 2020

Надеюсь, вы знакомы с vi. Если нет, проигнорируйте 3-ю команду, приведенную ниже, и просто скопируйте файл Main.java в /Users/your-user-directory/

cd ~
pwd
vi Main.java
javac Main.java
java Main

Main. java

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) {
        String s;
        Process p;
        String cmd = "ls";

        try {
            Runtime run = Runtime.getRuntime();
            p = run.exec(cmd);
            BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));

            while ((s = br.readLine()) != null) {
                System.out.println("line: " + s);
            }

            p.waitFor();
            System.out.println("exit: " + p.exitValue());
            p.destroy();

        } catch (Exception e) {
            System.out.println(e);
        }
    }
}
...