Выполнить java-класс в PHP

Я хочу вызвать программу java и получить ее вывод в stdout. Я следил за предложениями в stackoverflow . Но это не сработает.

Я добавляю файл класса в свой CLASSPATH. И я могу выполнить команду в cmd правильно следующим образом:

введите описание изображения здесь

В моем файле PHP я вызываю эту программу на

exec("java Hello", $output); print_r($output); 

Это не дает ничего, кроме:

 Array() 

В чем проблема? Как я могу это исправить?

ps: Привет, это демо-программа, на самом деле программа, которую я хочу вызвать, намного сложнее, чем может потребоваться 2 или более секунд на моей машине (i5 4G).

Я бы рекомендовал использовать Java / PHP Bridge, найденный здесь: http://php-java-bridge.sourceforge.net/pjb/ Это довольно просто установить и работает очень хорошо.

Кроме того, я рекомендую использовать следующую ссылку для ее загрузки. (это то же самое, что ссылка в папке downloads-> documentation)

http://sourceforge.net/projects/php-java-bridge/files/Binary%20package/php-java-bridge_6.2.1/php-java-bridge_6.2.1_documentation.zip/download

Файл – JavaBridge.war. Вероятно, вы захотите использовать Tomcat для контейнера Java EE. Как только Tomcat настроен, вы просто поместите этот файл в папку webapps и он будет установлен.

Если вы хотите регулярно использовать Java-классы в PHP, это лучший метод, о котором я знаю, и я пробовал много из них. Смола также работала, но она не играла хорошо с моим почтовым сервером.

Попробуй это:

 exec('java -cp .:/path/to/folder/of/your/file Hello 2>&1', $output); print_r($output); 

2>&1 должны отображать ошибки.

Ну, это дает массив правильно? поэтому вместо print_r($output) попробуйте print($output[0]) , выводящий «Hello World» на моей консоли: D

попробуйте трубку

 $command = 'java Hello'; $descriptorspec = array( 1 => array( 'pipe', 'w' ) ); $process = proc_open($command, $descriptorspec, $pipes); if (!is_resource($process)) { exit("failed to create process"); } $content = stream_get_contents($pipes[1]); fclose($pipes[1]); if (proc_close($process) === 0) { print_r($content); }else{ exit("failed to execute Hello"); }