Как выполнить действие командной строки Java на Unix - PullRequest
0 голосов
/ 25 января 2019

У меня есть два файла jar с именами test1.jar и test2.jar. Чтобы выполнить функцию в этом jar-файле, я запускаю команду ниже в cmd. «Java getOutput аргумент1 аргумент2 аргумент3 аргумент4»

В качестве предварительного условия я установил следующие записи в системных переменных среды для выполнения функции java с помощью приведенной выше команды.

1.CLASSPATH = C: \ Folder \ test1.jar; C: \ Folder \ test2.jar; C: \ Program Files \ Java \ jre1.8.0_181 \ lib \ plugin.jar

2.JAVA_BIN = C: \ Program Files \ Java \ jre1.8.0_181 \ bin

3.JAVA_HOME = C: \ Program Files \ Java \ jre1.8.0_181

4.PATH = C: \ Program Files \ Java \ jre1.8.0_181 \ bin

Вывод вышеуказанной команды представляет собой строку.

У меня есть другой код Java. Я должен захватить вышеуказанный вывод строки в переменной в моей Java-программе, и я могу сделать это, используя приведенный ниже Java-код в eclipse.

String strArgs= strArg1+" "+strArg2+" "+strArg3+" "+strArg4;   
Process p=Runtime.getRuntime().exec("cmd /c java  getOutput "+strArgs+"");    
BufferedReader input =new BufferedReader(new 

InputStreamReader(p.getInputStream()));                                                                                                                                                                                                                                                                                                

String strOutput = input.readLine();   
if (strOutput != null) {              
System.out.println(strOutput);
String strVariable = strOutput;                                                                                                                                          
input.close();                                                                               
}else {                                                                                              
System.out.println("FAIL- Output not generated");                                                                                                                                                  
}

Чтобы выполнить приведенный выше код в Unix, я заменяю строку 2 на «Process p = Runtime.getRuntime (). Exec (« usr / bin / java getOutput »+ strArgs +» «);» , преобразуйте Java-проект eclipse в jar-файл с именем Automation.jar. И я пытаюсь выполнить этот файл JAR на Unix, используя следующую команду. `java -cp Automation.jar Package.MainClass. ' Когда я запускаю код, я получаю вывод как ноль. Но когда я запускаю команду в командной строке Windows, я получаю строку вывода.

Не могли бы вы помочь мне с тем, как установить системные переменные в Unix и выполнить вышеуказанную операцию для генерации строкового вывода.

Пожалуйста, дайте мне знать, если требуется дополнительная информация.

1 Ответ

0 голосов
/ 25 января 2019

cmd только для окон.Unix использует оболочку.Но вам и здесь не нужно.Просто удалите вызов cmd.

Process p = Runtime.getRuntime().exec("java getOutput " + strArgs);

Если не удается найти Java, вы можете прочитать JAVA_BIN (или JAVA_HOME) из среды.

String java_bin = System.getenv("JAVA_BIN");
Process p = Runtime.getRuntime().exec(java_bin + "/java getOutput " + strArgs);

Наконец, переменные среды выглядят как переменные пути Windows.Убедитесь, что они подходят для вашей среды Unix (Unix не имеет диска "C").

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...