0

从 Liferay 6.2 升级到 Liferay 7 时,在使用 Liferay 升级工具解决重大更改然后转到建筑服务后,这 3 种类型的错误反复出现。为简洁起见,我只列出了每种情况。

我的感觉是它无法解决曾经占据BaseModel的底层自定义Generic,并用问号代替了它

[javac] Compiling 116 source files to C:\LiferayDXP\advglobalweb\v6.2\plugins\portlets\e-Recruit-portlet\docroot\WEB-INF\service-classes
[javac] C:\LiferayDXP\advglobalweb\v6.2\plugins\portlets\e-Recruit-portlet\docroot\WEB-INF\service\com\advantage\erecruit\model\CandidateApplicationClp.java:1301: error: cannot find symbol
[javac]     public BaseModel<?> getCandidateApplicationRemoteModel() {
[javac]            ^
[javac]   symbol:   class BaseModel
[javac]   location: class CandidateApplicationClp


[javac] C:\LiferayDXP\advglobalweb\v6.2\plugins\portlets\e-Recruit-portlet\docroot\WEB-INF\service\com\advantage\erecruit\model\PositionWrapper.java:35: error: PositionWrapper is not abstract and does not override abstract method isFinderCacheEnabled() in BaseModel
[javac] public class PositionWrapper implements Position, ModelWrapper<Position> {
[javac]        ^


[javac] C:\LiferayDXP\advglobalweb\v6.2\plugins\portlets\e-Recruit-portlet\docroot\WEB-INF\service\com\advantage\erecruit\model\CandidateApplicationClp.java:449: error: incompatible types: getClass cannot be converted to Class<?>
[javac]                 Class<?> clazz = _candidateApplicationRemoteModel.getClass();
4

1 回答 1

1

正如@dnebing 所说。有些课程不应该在那里。

第一个和最后一个错误是指在服务构建器 OSGi 模块中不再使用的 CPL 类。

第二个错误可能是由 ModelWrapper 引起的,他又不应该在那里。它被 ServiceWrapper 取代。

  • 我建议您使用刀片工具或 maven 原型为服务构建器模块创建一个新项目。
  • 然后复制服务 XML 文件。
  • 运行构建服务。
  • 放入您的实现类。当您执行升级过程时,它们应该已经与新 API 对齐。
  • 再次构建服务

事情现在应该工作

于 2018-04-05T18:46:30.787 回答