未能更新捆绑包:x.jar,ID 为 y。捆绑包已卸载

Failed to update bundle: x.jar with ID y. The bundle has been uninstalled

在Liferay 7中,我把一个模块JAR放到了deploy/,然后我通过Gogo卸载了它Shell,现在我想重新安装它。

问题:当我再次将其复制到 deploy/ 时,出现此错误:

INFO  [com.liferay.portal.kernel.deploy.auto.AutoDeployScanner][AutoDeployDir:252] Processing httpclient-osgi-4.5.3.jar
WARN  [fileinstall-/home/nico/liferay/osgi/modules][org_apache_felix_fileinstall:103] Failed to update bundle: /home/nico/liferay/osgi/modules/httpclient-osgi-4.5.3.jar with ID 1088. The bundle has been uninstalled 

如何解决?

首先,在 Liferay 的 osgi/modules/ 文件夹中找到 JAR 文件并将其删除。

其次,再次将 JAR 复制到 deploy/

参考文献:

当您通过 Liferay 的 deploy 文件夹部署某些内容时,它会通过称为 FileInstall 的机制引入 OSGi 运行时。

当您通过 Gogo shell 从 运行 系统取消部署时,组件将被卸载,但支持 FileInstall 的目录仍然包含该包(这意味着它将在下次部署时重新安装).通常这不是您想要的。

经验法则:当您通过 FileInstall 部署时,通过 FileInstall 取消部署。当您通过 Gogo Shell 部署时,通过 Gogo Shell 取消部署。不要混合两者。决定一个。

由于 Liferay 仅使用 FileInstall,因此不使用 Gogo Shell 进行生产部署是安全的。另外:通过 Gogo Shell 安装的捆绑包不会在支持 FileInstall 的目录中结束。重新部署后捆绑包可能不存在(特别是当您删除 osgi/state 文件夹时,有时会要求这样做。

从您的 \osgi\war 文件夹中删除 .war 文件并再次部署(从 \build\libs 复制到 \deploy 文件夹)。它会起作用。