Java通过PHP执行时无法找到类,相同的命令在CLI中有效

时间:2017-11-02 20:51:39

标签: java php

我试图在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的上下文运行时无法找到该类?

1 个答案:

答案 0 :(得分:1)

对于Windows,请使用双引号(")而不是单引号(')。

请参阅Including all the jars in a directory within the Java classpath了解Java细节,this answer了解Windows'处理单引号。