2012-01-21 72 views
4

在執行jar文件時,我在php中遇到以下問題。我用下面的命令:在PHP中運行JAR文件並編寫一個文件

exec("java -jar JavaProject4.jar"; 

的JavaProject4.jar建立在Java代碼中給出的路徑txt文件。

當我在NetBeans中運行項目時,會創建txt文件。但是,當我在php中優先於jar我沒有得到任何錯誤,但我無法獲得該文件。

這裏的java代碼我使用寫入文件:

public static void main(String[] args) throws InterruptedException, FileNotFoundException, IOException { 

    Main a = new Main(); 
    List<Double> l1 = new ArrayList<Double>(); 

    l1 = a.compute_features(); 
    //System.out.println(l1); 

    FileWriter fstream1 = new FileWriter("C:/wamp/www/test/out.txt"); 
    BufferedWriter out1 = new BufferedWriter(fstream1); 
    out1.write(l1.toString()); 
    out1.newLine(); 
    out1.close(); 
} 

進出口使用的PHP 5.2.4 WAMP的服務器和最新的Java版本。

非常感謝!

編輯: 問題解決了,我將NetBeans中的主要Java文件移動到默認包,並修復了錯誤的路徑,現在一切正常。

謝謝大家

+0

你確定你使用'EXEC正道()'? –

+0

是的,請在下面的答案中閱讀我的評論。有什麼建議麼?謝謝! –

回答

0

我認爲你需要指定的完整路徑: - Java可執行文件 - 你的罐子

例子:

EXEC(「在/ usr/bin中/ JAVA -jar /my/java/project/path/JavaProject4.jar「);

+0

他在Windows上,而不是Linux(但我明白你的觀點) –

1

當你用PHP運行它時,你是怎麼做到的?您是使用PHP CLI(命令行界面),還是通過Apache模塊(CGI或其他)運行它?我問的原因是因爲你遇到的問題可能與腳本執行的用戶有關。如果您正在使用CLI,那麼您正在以Windows用戶身份運行,但是,如果您通過Apache運行它,則它將以Apache運行的任何用戶身份運行。因此,您可能需要爲您正在寫入的目錄的Apache用戶授予相關權限。

問候, 拉爾夫

+0

我創建了一個簡單的JAR文件,以相同的方式通過PHP編寫一個txt文件(通過apache模塊使用WAMP),編寫它也沒有問題。所以它不是關於我想要寫的權限,而是關於Java代碼的其他一些問題。有可能我缺少一些相關的JAR文件,或者可能是我的主類有問題?我如何檢查? –