You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Liferay7.2部署Hook时报Unresolved requirement: com.google.common.collect错误如何解决

根因分析

这个OSGi启动报错是因为你的Bundle声明导入了com.google.common.collect包,但运行时Liferay容器没有匹配到可用的导出包,核心问题有两个:

  • 你使用的com.google.collections是已废弃的旧项目,该项目早已合并到Guava中,Liferay7.2内置的Guava包不会导出旧的google-collections相关路径
  • BND插件自动生成的OSGi导入声明版本约束和Liferay内置Guava的版本不匹配

解决步骤

1. 修正POM依赖

删除原有com.google.collections依赖,替换为Liferay7.2内置版本的Guava依赖,scope设为provided直接复用容器自带的包,无需自行打包:

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>25.1-jre</version>
    <scope>provided</scope>
</dependency>

2. 配置BND导入规则

在项目src/main/resources目录下新建/修改bnd.bnd文件,添加以下配置,放开Guava包的导入版本约束:

Import-Package: com.google.common.collect;version="*",\
    *

配置说明:

  • com.google.common.collect;version="*"表示匹配任意版本的com.google.common.collect导入
  • 末尾的*表示其余包保持BND默认的自动导入规则

3. 重新构建部署

执行mvn clean install命令构建新的Bundle包,放到Liferay的deploy目录下启动即可。

备选方案(需自定义Guava版本时使用)

如果你必须使用和Liferay内置版本不同的Guava,可将Guava内嵌到自己的Bundle中:

  1. 将上述Guava依赖的scope改为compile
  2. 在bnd.bnd中添加内嵌配置:
Embed-Dependency: guava;inline=true

内容的提问来源于stack exchange,提问作者sheldon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 13:15:03