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