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

Liferay 7.1 GA3中shopping-web无法访问shopping-api/service类问题

问题分析与解决方法

你遇到的javax.servlet.ServletException: java.lang.NoClassDefFoundError: com/project/demo/model/Product错误,核心原因是shopping-web模块的bnd配置主动排除了需要导入的核心包,导致web模块无法加载shopping-api中的模型与服务类。

关键错误点

查看你提供的shopping-web的bnd.bnd文件,Import-Package和Import-Service中都用!前缀排除了com.project.demo.model、com.project.demo.service等必需包,相当于主动拒绝加载这些类,自然会出现找不到类的错误。

具体修复步骤

1. 修正shopping-web的bnd.bnd配置

删除对核心包的排除规则,让模块自动导入所需依赖:

Bundle-Name: shopping-web
Bundle-SymbolicName: com.web.project.demo
Bundle-Version: 1.0.0
Export-Package: com.web.project.demo.constants

# 自动导入所有依赖包,无需手动排除
Import-Package: *

# 服务导入只需保留默认规则,无需排除核心服务
Import-Service: *

2. 确认模块依赖配置

检查shopping-web的构建文件,确保已添加对shopping-api的依赖:

  • 若使用Gradle,在build.gradle中添加:
dependencies {
    compileOnly project(":shopping-api")
    // 其他原有依赖...
}
  • 若使用Maven,在pom.xml中添加:
<dependency>
    <groupId>com.project.demo</groupId>
    <artifactId>shopping-api</artifactId>
    <version>1.0.0</version>
    <scope>provided</scope>
</dependency>

3. 清理并重新部署

  • 执行构建命令清理缓存:Gradle用gradlew clean build,Maven用mvn clean install
  • 依次重新部署shopping-api、shopping-service、shopping-web模块到Liferay
  • 必要时重启Liferay服务器,确保模块加载状态正常

额外验证

  • 确认shopping-api的bnd配置已正确导出com.project.demo.model、com.project.demo.service等包(你的现有配置没问题,无需修改)
  • 在Liferay的Gogo Shell中执行lb命令,检查三个模块的状态是否为Active

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 12:20:22