【发布时间】:2013-09-02 19:23:28
【问题描述】:
我有两个 java 类,它们位于 .../jtest/StepRegTest 目录中,包括“package StepRegTest;”指令。
选项 1。我直接从 shell 调用它:
[jtest]# java StepRegTest.Main
一切正常。
选项 2。我通过 PHP exec 调用 java:
<?php
echo getcwd() . "\n";
exec("java StepRegTest.Main 2>&1", $output);
print_r( $output );
?>
当我从 shell 调用 PHP 文件时,PHP 文件与选项 1 位于同一目录 jtest 中。但是,它返回一个错误:
线程“main”java.lang.NoClassDefFoundError 中的异常:com/quinncurtis/matpackjava/DMatBase
引用这些缺失类的 jar 存档位于 CLASSPATH 中。 该类的导入参考是:
import com.quinncurtis.matpackjava.DDMat;
请注意,当我从 shell 执行代码时,一切正常。
这里有什么问题?为什么它可以在 shell 中工作,而不是在 PHP 中?
谢谢!
【问题讨论】:
-
可能你的 CLASSPATH 没有在 PHP 版本中设置。试试这个:
exec("export CLASSPATH=.;java StepRegTest.Main 2>&1", $output);