Ninja Framework mailProvider.get() 给出空指针异常

Posted

技术标签:

【中文标题】Ninja Framework mailProvider.get() 给出空指针异常【英文标题】:Ninja Framework mailProvider.get() gives a Null pointer exception 【发布时间】:2016-03-14 22:45:45 【问题描述】:

我按照指示做了一切。

application.conf 包含:

smtp.host=smtp.gmail.com
smtp.port=465
smtp.ssl=true
smtp.user=myemail@gmail.com
smtp.password=xxxxxx
smtp.debug=false

代码包含

    package controllers;


import ninja.postoffice.Mail;
import ninja.postoffice.Postoffice;
import com.google.inject.Inject;
import com.google.inject.Provider;

public class MailController 

    @Inject
    Provider<Mail> mailProvider;

    @Inject
    Postoffice postoffice;

    public void sendMail(String to) 
        try 
        Mail mail = mailProvider.get();
......

mailProvider.get() 失败,给出 java.lang.NullPointerException

我错过了什么??

编辑,堆栈跟踪:

java.lang.NullPointerException
        at controllers.MailController.sendMail(MailController.java:19)
        at controllers.RegisterResendController.confirmation(RegisterResendController.java:37)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:497)
        at ninja.params.ControllerMethodInvoker.invoke(ControllerMethodInvoker.java:57)
        at ninja.FilterChainEnd.next(FilterChainEnd.java:49)
        at ninja.NinjaDefault.onRouteRequest(NinjaDefault.java:102)
        at ninja.servlet.NinjaServletDispatcher.service(NinjaServletDispatcher.java:86)
        at com.google.inject.servlet.ServletDefinition.doServiceImpl(ServletDefinition.java:287)
        at com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:277)
        at com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:182)
        at com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:91)
        at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:85)
        at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:119)
        at com.google.inject.servlet.GuiceFilter$1.call(GuiceFilter.java:133)
        at com.google.inject.servlet.GuiceFilter$1.call(GuiceFilter.java:130)
        at com.google.inject.servlet.GuiceFilter$Context.call(GuiceFilter.java:203)
        at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:130)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
        at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
        at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
        at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
        at org.eclipse.jetty.server.Server.handle(Server.java:497)
        at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310)
        at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
        at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540)
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
        at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
        at java.lang.Thread.run(Thread.java:745)

【问题讨论】:

请提供异常的stacktrace。 @nullpointer 请查看已编辑的帖子以获取堆栈跟踪 What is a Null Pointer Exception, and how do I fix it?的可能重复 @jipr311 不,不是,请尊重。谢谢。 【参考方案1】:

您的 RegisterResendController 必须以某种方式获取 MailController 的实例。我怀疑 MailController 的实例没有注入 RegisterSendController。因此缺少 Guice 提供的任何实例。确保您不要自己创建类的实例(通过“new MailController”等)。

如果您想获得更多反馈,请同时粘贴行号和 RegisterSendController。

【讨论】:

大概是这样,我一测试就告诉你。

以上是关于Ninja Framework mailProvider.get() 给出空指针异常的主要内容,如果未能解决你的问题,请参考以下文章

如何安装第一个 Ninja Web Framework 应用程序?

过滤器中的 Ninja Framework JSR303Validation

将 java.sql.Connection 注入 Ninja Framework 的控制器

Ninja Framework:通过 Eclipse 和 m2eclipse 插件进行调试 - jetty:run 不启动服务器,而是构建

AOSP ninja build 已停止:子命令失败

C++学习(四四二)cmake ninja build.ninja rules.ninja