ClassNotFoundException:com.liferay.portal.kernel.model.BaseModelListener

ClassNotFoundException:com.liferay.portal.kernel.model.BaseModelListener,liferay,osgi,liferay-7,bnd,bndtools,Liferay,Osgi,Liferay 7,Bnd,Bndtools,我写了一个Liferay模块: @Component( immediate = true, service = ModelListener.class ) public class TopMessageListener extends BaseModelListener<JournalArticle> { // Do stuff } 在我的build.gradle(以及其他内容)中: 它编译良好,但部署失败: ClassNotFoundException:

我写了一个Liferay模块:

@Component(
    immediate = true,
    service = ModelListener.class
)
public class TopMessageListener extends BaseModelListener<JournalArticle> {
    // Do stuff
}
在我的
build.gradle
(以及其他内容)中:

它编译良好,但部署失败:

ClassNotFoundException: com.liferay.portal.kernel.model.BaseModelListener cannot be found by fr.free.nrw.impl_1.0.0
    at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:444)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:357)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:349)
    at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:160)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

如果我将
compileOnly组:“com.liferay.portal”
替换为
compileInclude组:“com.liferay.portal”
,错误就会消失,但我确信这不是正确的方法。如何正确修复上面的
ClassNotFoundException

请尝试此依赖项
compileOnly组:“com.liferay.portal”,名称:“com.liferay.portal.kernel”,版本:“2.0.0”

将httpcomponents行复制为两行,一行
compileOnly
和一行
runtime

compileOnly group: "com.liferay.portal", name: "com.liferay.portal.kernel", version: "2.6.0"

compileOnly group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.5.3'
runtime group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.5.3'
这为我解决了问题

ClassNotFoundException: com.liferay.portal.kernel.model.BaseModelListener cannot be found by fr.free.nrw.impl_1.0.0
    at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:444)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:357)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:349)
    at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:160)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
compileOnly group: "com.liferay.portal", name: "com.liferay.portal.kernel", version: "2.6.0"

compileOnly group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.5.3'
runtime group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.5.3'