显示java.lang.NullPointerException

时间:2016-11-30 09:01:46

标签: liferay liferay-7

我正在进行自定义SQL应用。我创建了一个服务构建器,创建了finder列,构建并部署了它。表已成功创建。现在我手动创建了一个 * FinderImpl 类,并在一个包含必要详细信息的custom-sql文件夹中重建了这些服务。 * Finder 界面生成成功。我在 * FinderImpl 类中实现了 * Finder 界面,然后重建了服务,但未生成 * FinderUtil 。我忽略了它,因为我可以轻松地调用 * FinderImpl 类'方法直接。我在 * FinderImpl 类中创建了一个自定义方法并重建了该服务。我在 * LocalServiceImpl 中调用此方法,并通过 * LocalServiceUtil 调用 * LocalServiceImpl 的方法。但令我惊讶的是,我得到了最常见的错误 - " NullPointerException "。我调试并发现 * LocalServiceUtil的 getService()方法的值为null。请告诉我如何根除这个错误,因为我一整天都被困住但无法解决。所以,请帮忙。提前完成。

2 个答案:

答案 0 :(得分:0)

你的班级发现者声明必须是

public class CustomUser2FinderImpl extends CustomUser2BaseFinderImpl implements CustomUser2Finder

构建服务时,build.gradle中有一些属性,因此如果要生成FinderUtil类,必须将osgiModule设置为false。

buildService {
    osgiModule = false
}

否则,如果你想使用osgi,你可以这样回收取景器

@Reference
private volatile CustomUser2Finder customUser2Finder;

答案 1 :(得分:0)

NullPointerException类添加到Service Builder时,遇到同样的问题,无法获得EntityFinderImpl

我刚刚发现我需要在EntityFinderImpl类中添加组件注释:

@Component(
        service = EntityFinder.class
)
public class EntityFinderImpl extends EntityFinderBaseImpl implements EntityFinder {
    public List<Entity> findByDate(Date date) {
        ...
        return dates;
    }
}

这似乎是由于EntityLocalServiceBaseImpl类获得指向@Reference的指向EntityFinder的附加指向而引起的,但是由于没有要引用的组件,因此无法满足该引用。

您可以使用以下命令诊断Gogo Shell中是否存在此问题:

ds:unsatistied

或可选:

ds:unsatisfied <bundleid>

您还可以使用Gogo命令查看捆绑软件中的组件和引用:

scr:list <bundleid>

最后,另请参阅Liferay's Detecting Unresolved OSGi Components文档。