Как я могу начать .jar в xterm с args? - PullRequest
0 голосов
/ 11 февраля 2020
 if (args.length == 0&&runningFromIntelliJ()==false) {
            String OS = System.getProperty("os.name", "generic").toLowerCase(Locale.ENGLISH);
            if (OS.indexOf("win") >= 0) {
                String path = CODE.run.class.getProtectionDomain().getCodeSource().getLocation().getPath().substring(1);
                String decodedPath = null;
                try {
                    decodedPath = URLDecoder.decode(path, "UTF-8");
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                }
                try {
                    Runtime.getRuntime().exec("cmd"+" /c start java -jar \"" + decodedPath + "\" run");
                } catch (IOException e) {
                    e.printStackTrace();
                }
                System.exit(0);
            }
        }
}

Этот код запускает программу в cmd после того, как я дважды щелкнул по ней. проблема в том, что он работает только в windows, и я хочу запустить его на моем Raspberry Pi. Проблема сейчас в том, что я не представляю, как можно запустить .jar с аргументами в xterm.

runningFromIntelliJ () просто проверяет, запускаю ли я программу в IntelliJ и пропускает эту часть, если я это делаю.

Ответы [ 2 ]

0 голосов
/ 11 февраля 2020

Вот один из способов запустить программу с помощью xterm.

xterm -hold -e '/bin/bash -c "ls -l"'

В этом примере программа представляет собой просто команду ls, но она не требует пояснений, как использовать ее для Java. ; просто используйте пример из другого ответа .


В вашем java коде это выглядит так:

Runtime.getRuntime().exec(String.format("xterm -hold -e '/bin/bash -c \"%s\"'", "java -jar '" + decodedPath + "' run"));

или без оболочки :

Runtime.getRuntime().exec(String.format("xterm -hold -e 'java -jar \"%s\" run'", decodedPath));
0 голосов
/ 11 февраля 2020

Похоже, что ваше приложение ничего не сделает, если аргумент передан банке.

if (args.length == 0)

будет ложным, следовательно, целым, если. Если у вас есть другой код для работы с аргументами, попробуйте это:

java -jar yourJar.jar "arg 1" arg2 @

В противном случае просмотрите ваш код .

...