问题描述
我已经下载了Liferay 7.3.5 Community Edition from here,并试图部署HelloWorld Portlet进行测试。它与Tomcat捆绑在一起。 我正在使用Liferay Developer Studio(在类固醇上使用相同的旧Eclipse)来开发和部署portlet。版本3.8.1.202004240132-ga2 我还在this link中创建了一个服务器-该服务器正在使用已经下载的捆绑软件中的tomcat 9.0.37。
完成上述步骤后,我执行了here中的步骤,以创建模块项目并将其部署在已启动的tomcat服务器上。该portlet出现在已部署的部分中,但附近有一个红色的“ x”:
我去为此目的而创建的小部件页面中添加了portlet / widget,但是找不到该portlet:
然后,以管理员用户身份登录,我转到“控制面板”->“应用程序管理器”,并搜索我的Portlet。它显示为“已安装”,我可以激活它。当我点击“激活”后,Eclipse日志开始写:ERROR [http-nio-8080-exec-8][PortletServlet:119] javax.portlet.PortletException: org.osgi.framework.BundleException: Could not resolve module: VictorTestPortlet [2716]_ Unresolved requirement: Import-Package: com.liferay.portal.kernel.portlet.bridges.mvc; version="[2.0.0,3.0.0)"_ [Sanitized]
问题:是什么原因导致此错误?
解决方法
您自己找到了复杂的解决方案,有两种简单的方法:
-
使用目标平台。假设您正在使用Liferay工作区,则工作区根目录中的gradle.properties具有条目
liferay.workspace.target.platform.version
。将其设置为7.3.5
,版本将自动获取 -
通过设置目标平台,可以自动检测所需的模块,并将您的依赖项声明为
依赖项{ compileOnly组:“ com.liferay.portal”,名称:“ release.portal.api” }
这甚至可以找出您需要依赖的确切模块(超过1000个)。诚然,它与整个模块化概念(要注意您的依赖关系)有点冲突,但是非常方便。
,问题就象已经陈述的那样-找不到依赖项。
要解决此问题,我进入了 build.gradle 文件,该文件缺少“ com.liferay.portal”依赖项的版本。所以,我的台词看起来像这样:
compileOnly group: "com.liferay.portal",name: "com.liferay.portal.kernel"
现在看起来像这样:
compileOnly group: "com.liferay.portal",name: "com.liferay.portal.kernel",version: "9.8.1"
版本必须必须与Liferay Server实例中的版本相同-您可以通过访问portal-kernel.jar
并在其MANIFEST.MF文件中查找键“ Bundle-版”。该罐子位于... portal-tomcat-7.3.5 \ tomcat-9.0.37 \ lib \ ext文件夹中。
祝你好运!