未解决的要求:导入包:com.liferay.portal.kernel.portlet.bridges.mvc;版本=“ [2.0.0,3.0.0”

问题描述

我已经下载了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”:

enter image description here

我去为此目的而创建的小部件页面添加了portlet / widget,但是找不到该portlet:

enter image description here

然后,以管理员用户身份登录,我转到“控制面板”->“应用程序管理器”,并搜索我的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]

enter image description here

问题:是什么原因导致此错误

解决方法

您自己找到了复杂的解决方案,有两种简单的方法:

  1. 使用目标平台。假设您正在使用Liferay工作区,则工作区根目录中的gradle.properties具有条目liferay.workspace.target.platform.version。将其设置为7.3.5,版本将自动获取

  2. 通过设置目标平台,可以自动检测所需的模块,并将您的依赖项声明为

    依赖项{ 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文件夹中。

祝你好运!

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...