我有一个通用实体类
ProductFilter
,它包含 JSONWS POST 端点的输入参数。构建服务后,我应该把这个类放在哪里,在模块api
下还是模块service
下?
首先我把它放在
service
下,然后api
中的一个界面抱怨找不到ProductFilter
。
C:\Users\Zirui\projects\nongzi\code\nongzi-gradle2\modules\db\db-api\src\main\java\com\toptoken\core\service\ProductService.java:26: error: package com.toptoken.core.domain.page does not exist
import com.toptoken.core.domain.page.ProductFilter;
^
然后我把它放在
api
下,但是service
的部署抛出了一个异常,service
无法找到ProductFilter
,尽管service
取决于api
。
2023-08-22 08:13:26.489 错误 [fileinstall-directory-watcher][DirectoryWatcher:1173] 无法启动捆绑包:文件:/C:/Users/Zirui/projects/web3/test/gradle-wsdd/bundles /osgi/modules/com.toptoken.core.service-1.0.0.jar com.liferay.portal.kernel.log.LogSanitizerException:org.osgi.framework.BundleException:无法解析模块:com.toptoken.core.service [1627]_ 未解决的要求:导入包:com.toptoken.core.domain .page_ [已清理]
最后我将
ProductFilter
放在api
和service
下,但是部署时出现错误:
java.lang.LinkageError:加载器约束冲突:加载器 org.eclipse.osgi.internal.loader.EquinoxClassLoader @5c03e79e (org.eclipse.osgi.internal.loader.EquinoxClassLoader 的实例,com.liferay.shielded.container 的子级。 internal.ShieldedContainerClassLoader @3fc9dfc5 com.liferay.shielded.container.internal.ShieldedContainerClassLoader) 想要加载类 com.toptoken.core.domain.page.ProductFilter。 org.eclipse.osgi.internal.loader.EquinoxClassLoader @38c9a210 先前已加载具有相同名称的不同类(org.eclipse.osgi.internal.loader.EquinoxClassLoader 的实例,com.liferay.shielded.container 的子级) .internal.ShieldedContainerClassLoader @3fc9dfc5 com.liferay.shielded.container.internal.ShieldedContainerClassLoader).
我应该把
api
放在哪个模块下,service
还是ProductFilter
?
您是否已将 API 依赖项包含在服务的 build.gradle 中?