使用Php exec函数在Azure上运行jar文件

时间:2015-03-22 15:35:29

标签: java php azure jar

我先给出一些背景知识。我有三个文件:test.php,test.txt,myJar.jar。以下是每个代码中的代码

test.php的:

<?php
exec("java -cp myJar.jar Hello test.txt", $o);
print_r($o);
?>

用于制作myJar.jar文件的实际代码:

import java.io.*;
public class Hello
{
    public static void main(String[] args) throws Exception
    {
        FileReader file = new FileReader(args[0]);
        BufferedReader reader = new BufferedReader(file);
        String line = reader.readLine();
        while (line != null)
        {
            System.out.println(line);
            line = reader.readLine();
        }
    }
}

的test.txt:

hello hello dinosir
this is a test
testing to the extreme
adding more crap here
and here

现在我将这些文件放在htdocs中并使用chrome运行localhost / test.php我得到: enter image description here

完全符合我的要求。问题是当我将这些文件上传到github并将其链接到azure上的网站时,我会访问该网站,但我只看到了Array()。我假设它是因为Azure没有jre来运行&#34; java -cp myJar.jar Hello test.txt&#34;命令。关于如何在azure上安装/启用jre以使test.php以与我的localhost相同的方式运行的任何想法

2 个答案:

答案 0 :(得分:2)

您检查过您的网站配置吗?确保Java没有设置为&#34; off&#34; (默认) Azure portal configuration page for a website

答案 1 :(得分:0)

在Azure中将此工作作为PHP应用程序的唯一方法是创建.bat文件。就像这样:

example.bat应该包含以下内容:

set PATH=%PATH%;%JAVA_HOME%/bin
java -jar %~dp0java-file.jar %*

重要的是要意识到您应该更改的唯一内容是java-file.jar,并且需要使用%~dp0%*进行修改。

然后使用.bat执行php文件:

exec("example.bat", $output);

多数民众赞成。适合我。