无法更新包:ID 为 y 的 x.jar。捆绑包已卸载
Posted
技术标签:
【中文标题】无法更新包:ID 为 y 的 x.jar。捆绑包已卸载【英文标题】:Failed to update bundle: x.jar with ID y. The bundle has been uninstalled 【发布时间】:2017-12-24 12:02:51 【问题描述】:在 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
如何解决?
【问题讨论】:
【参考方案1】:首先,在 Liferay 的 osgi/modules/
文件夹中找到 JAR 文件并将其删除。
其次,再次将 JAR 复制到 deploy/
。
参考资料:
https://issues.liferay.com/browse/LPS-72283 https://issues.liferay.com/browse/LPS-67254【讨论】:
【参考方案2】:当您通过 Liferay 的 deploy
文件夹部署某些东西时,它会通过称为 FileInstall 的机制被引入 OSGi 运行时。
当您通过 Gogo shell 从正在运行的系统取消部署时,组件会被卸载,但支持 FileInstall 的目录仍然包含捆绑包(这意味着它将在下次部署时重新安装)。通常这不是您想要的。
经验法则:通过 FileInstall 部署时,通过 FileInstall 取消部署。通过 Gogo Shell 部署时,通过 Gogo Shell 取消部署。不要混合两者。决定一个。
由于 Liferay 仅使用 FileInstall,因此不使用 Gogo Shell 进行生产部署是安全的。另外:通过 Gogo Shell 安装的捆绑包不会出现在支持 FileInstall 的目录中。重新部署后捆绑包可能不存在(尤其是当您删除 osgi/state
文件夹时,有时会要求这样做。
【讨论】:
【参考方案3】:从您的 \osgi\war
文件夹中删除 .war 文件并再次部署(从 \build\libs
复制到 \deploy
文件夹)。它会起作用的。
【讨论】:
以上是关于无法更新包:ID 为 y 的 x.jar。捆绑包已卸载的主要内容,如果未能解决你的问题,请参考以下文章