当我尝试使用javaBridge时,我收到以下通知,因为我想在php中使用java代码,我遵循了一些教程但是遵循了以下内容
Undefined property: java_Client::$cancelProxyCreationTag in D:\xampp\htdocs\java\Java.inc on line 1994
整个test.php文件如下,除了通知其他东西是正常的,
php-java-bridge config...
Java version=1.7.0_55
Notice: Undefined property: java_Client::$cancelProxyCreationTag in D:\xampp\htdocs\java\Java.inc on line 1994
Java vendor=Oracle Corporation
OS=Windows 7 6.1 on amd64
星期三, 八月 27, 2014 at 4:56:58 下午 中国标准时间
有人遇到同样的麻烦吗?谢谢!
答案 0 :(得分:3)
只需在$cancelProxyCreationTag
类
java_Client
即可
//Java.inc
class java_Client {
...
public $cancelProxyCreationTag;
...
}
此属性用于Java destruct方法。如果您在循环中使用桥,则必须使用它。
答案 1 :(得分:1)
解决这个问题需要解决两个相互关联的问题。
首先,原始JavaBridge.war中没有部署java/Java.inc
个文件。它是生成的,由于你遇到的bug潜伏在java/Java.inc
内,这是有问题的。
其次,java/Java.inc
文件包含一个在初始化之前递增的变量。
修复这些问题如下:
java/Java.inc
提取java -cp JavaBridge.war TestInstallation
文件。java/Java.inc
。if( empty($client->cancelProxyCreationTag) ) { $client->cancelProxyCreationTag = 0; }
else
区块(1989至1998年线)应该类似于:
} else {
$result=clone($client->cachedJavaPrototype);
$result->__factory=$cacheEntry->factory;
$result->__java=++$client->asyncCtx;
$result->__signature=$cacheEntry->signature;
// FIX: initialize variable before it is used.
if( empty($client->cancelProxyCreationTag) ) {
$client->cancelProxyCreationTag = 0;
}
$result->__cancelProxyCreationTag=++$client->cancelProxyCreationTag;
return $result;
保存文件。
接下来,重新创建.war文件,如下所示:
java
目录移动到临时目录中;确保它包含更新的Java.inc
文件!JavaBridge.war
文件。例如,这可能类似于:
mkdir temp
unzip ../JavaBridge.war
mv ../java .
mv ../JavaBridge.war /tmp
zip -r ../JavaBridge.war *
问题应该解决。