解决这个问题需要解决两个相互关联的问题。
java/Java.inc
首先,原始JavaBridge.war中没有部署文件。它是生成的,这是由于您遇到的隐藏在java/Java.inc
.
其次,该java/Java.inc
文件包含一个在初始化之前递增的变量。
修复这些问题如下:
- 下载JavaBridge.war文件。
- 根据文档
java/Java.inc
,通过调用:提取文件。java -cp JavaBridge.war TestInstallation
- 修复出现的任何错误(例如缺少 php5-cli)。
- 编辑
java/Java.inc
.
- 转到第 1994 行。
- 在 1994 行的正上方插入以下代码:
如果(空($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 文件,如下所示:
- 创建一个新的空临时目录
- 将原始 JavaBridge war 文件解压缩到临时目录中。
- 将
java
目录移动到临时目录中;确保它包含更新的Java.inc
文件!
- 归档损坏的
JavaBridge.war
文件。
- 创建 JavaBridge 的新版本。
例如,这可能类似于:
mkdir temp
unzip ../JavaBridge.war
mv ../java .
mv ../JavaBridge.war /tmp
zip -r ../JavaBridge.war *
问题应该得到解决。