我试图在PHP脚本中运行一个小型Java类。它在Linux上按预期工作,但是当在Windows上执行相同的脚本时,我收到:
无法找到或加载主类JDBCProxy
这是相关的PHP:
$classpath = join(PATH_SEPARATOR, array(
dirname(__FILE__).DIRECTORY_SEPARATOR.'JDBCProxy',
dirname(__FILE__).DIRECTORY_SEPARATOR.'JDBCProxy'.DIRECTORY_SEPARATOR.'libs'.DIRECTORY_SEPARATOR.'json-simple-1.1.1.jar',
));
$cmd = sprintf("java -cp '%s' JDBCProxy", $classpath);
...
$process = proc_open($cmd, $descriptorspec, $pipes);
sprintf
的输出是
java -cp 'C:\worker\lib\DB\JDBCProxy;C:\worker\lib\DB\JDBCProxy\libs\json-simple-1.1.1.jar' JDBCProxy
直接从命令行运行时,这可以按预期工作。 为什么Java从PHP的上下文运行时无法找到该类?
答案 0 :(得分:1)
对于Windows,请使用双引号("
)而不是单引号('
)。
请参阅Including all the jars in a directory within the Java classpath了解Java细节,this answer了解Windows'处理单引号。