运行java" .class"用PHP

时间:2014-04-22 14:03:48

标签: java php wampserver

您好我是PHP的编程新手。我使用WAMP服务器 - > Apache版本2.4.4和PHP版本5.4.16

我想从php脚本执行java程序,这是我的java程序

   file : test.java
    import java.io.*; 
    public class test {
        public static void main(String args[]) {
            System.out.println("Hello World");
        }
    }

我用过

exec("javac test.java");
exec(java test);

并没有用。所以我试着将命令代码放在“runfile.bat”

javac test.java > error.txt
java test > output.txt

当我通过左键单击两次执行runfile.bat时,它运行完美,并在output.txt中显示文本“Hello World”

然后我从PHP尝试:

exec('start /B /C runfile.bat');

...而output.txt中没有任何内容。

2 个答案:

答案 0 :(得分:1)

肯定是PHP的exec()会这样做。

<?php
exec('java test', $output, $return_var);

// `$output` captures the output of command executed
print_r($output);

// Generally `$return_var` becomes 0 if the command was successful
if (0 == $return_var) {
    // Command successfull
}
?>

PS: 确保您的Java类路径正确。 一直在寻找PHP Manual - 这是我见过的最好的手册。

答案 1 :(得分:0)

您可能希望在此处完全限定路径(尤其是,如果这是一个Web应用程序):

exec("javac test.java");
exec("java test");

更像是:

exec("/path/to/javac /and/the/path/to/test.java");
exec("/path/to/java /and/the/path/to/test");

它可能是“正在运行”但工作目录不正确,因此可能无法找到javacjava可执行文件或可以找到它们但找不到test.java。当您手动运行这些内容时,可执行文件位于您的路径中,并且该文件位于您的工作目录中,但对于PHP上下文,这两者都可能不正确。

除此之外,无论如何完全限定事物也是一种好习惯。它更明确,更不容易出错(如果用户以某种方式将自己的javac可执行文件上传到您的网站,他们可以使用您的脚本以提升的权限执行它。)