[PHP] 如何利用shell.exec來執行java jar檔案

環境:
Windows 7 64bit on VMware Worksation 10.0

前置作業:
1. 安裝java7以上版本
2. 安裝apache + php環境(此範例使用xampp)
3. 安裝任意壓縮軟體(此範例使用7-zip)

----------
1.製作一個java程式並匯出成Demo.jar檔

public class Main {
  public static void main( String[] args ) {
    System.out.printundefined args[0] + " " + args[1] );
  } // END of main
} // END of class Main

匯入其中的參數形態為String,參數會以args的陣列保存。

此Demo的內容為輸入兩個參數,會在程式內結合兩個參數並輸出。

2. 在php執行資料夾htdocs創建一個run.php,並將Demo.jar複製到htdocs資料夾



<?php
$output = shell_exec( "\"C:\Program Files (x86)\Java\jre1.8.0_60\bin\java\"" . " -jar Demo.jar abc 123 2>&1" );
var_dump($output);
?>

其中java請自行參考你電腦中java的絕對位置,

jar檔請參考你要執行之程式對於run.php的相對位置。


abc, 123分別為參數args[0]和args[1],

2>&1會讓程式顯示錯誤訊息,不一定要放上去。



3. 執行run.php後,你應該會看到這個畫面:







會發生這個問題,

是因為還沒有在jar檔指定那個class為預設執行的。



4. 用7-zip開啟Demo.jar,用notepad打開在META-INF資料夾的MANIFEST.MF:





裡面應該只有版本號:



第二行加入Main-Class: Main(Main請參考要當作預設之class相對位置)



注意:Main-Class:和Main之間要有一個空白,並且要按下Enter保持第三行空白


5. notepad保存離開,7-zip保存變更離開。

重新執行run.php可以看到output的結果。

==========除錯==========

1. 遇到網頁顯示亂碼:

那是cmd的中文訊息,請將瀏覽器語系改變成big5或gbk,

或參考以下網址:

http://zhidao.baidu.com/question/553667404400443612.html

留言

這個網誌中的熱門文章

[Javascript] 利用Google Calendar api 存取 Google 行事曆

[滑鼠] 羅技G402 換微動