[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檔
匯入其中的參數形態為String,參數會以args的陣列保存。
此Demo的內容為輸入兩個參數,會在程式內結合兩個參數並輸出。
2. 在php執行資料夾htdocs創建一個run.php,並將Demo.jar複製到htdocs資料夾

其中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
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
留言
張貼留言