【问题标题】:Play framework Mailer throwing NullPointerException at maile.send() method播放框架 Mailer 在 maile.send() 方法中抛出 NullPointerException
【发布时间】:2016-03-14 04:21:28
【问题描述】:

我正在使用 play Mailer 模块。我在 ma​​ilerClient.send(email) 处收到 NullPointerException。

发送邮件代码

import javax.inject.Inject;
import play.libs.mailer.Email;
import play.libs.mailer.MailerClient;
public class MailerService {
    @Inject MailerClient mailerClient;
    public void sendEmail() {
        Email email = new Email();
        email.setSubject("Activation Link");
        email.setFrom("from@gmail.com");
        email.addTo("to@gmail.com");
        email.setBodyText("hello");
        mailerClient.send(email);
    }
}

application.conf

 # Logger provided to your application:
logger.application=DEBUG
play{
  modules {
    enabled += "play.api.libs.mailer.MailerModule"
    #enabled += "play.api.libs.mailer.SMTPConfigurationModule"
  }
  mailer {
  host=smtp.gmail.com
  port=465
  ssl=yes
  tls=no
  user="my gmail username"
  password="gmail password"
  debug=yes
}
}

我还在 build.sbt 中添加了 "com.typesafe.play" %% "play-mailer" % "3.0.1"

播放版本:- 2.4

java 版本:1.8

我正在添加堆栈跟踪

play.api.http.HttpErrorHandlerExceptions$$anon$1: Execution exception[[NullPointerException: null]]
    at play.api.http.HttpErrorHandlerExceptions$.throwableToUsefulException(HttpErrorHandler.scala:265) ~[play_2.11-2.4.6.jar:2.4.6]
    at play.api.http.DefaultHttpErrorHandler.onServerError(HttpErrorHandler.scala:191) ~[play_2.11-2.4.6.jar:2.4.6]
    at play.api.GlobalSettings$class.onError(GlobalSettings.scala:179) [play_2.11-2.4.6.jar:2.4.6]
    at play.api.DefaultGlobal$.onError(GlobalSettings.scala:212) [play_2.11-2.4.6.jar:2.4.6]
    at play.api.http.GlobalSettingsHttpErrorHandler.onServerError(HttpErrorHandler.scala:94) [play_2.11-2.4.6.jar:2.4.6]
    at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$9$$anonfun$apply$1.applyOrElse(PlayDefaultUpstreamHandler.scala:151) [play-netty-server_2.11-2.4.6.jar:2.4.6]
    at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$9$$anonfun$apply$1.applyOrElse(PlayDefaultUpstreamHandler.scala:148) [play-netty-server_2.11-2.4.6.jar:2.4.6]
    at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:36) [scala-library-2.11.6.jar:na]
    at scala.util.Failure$$anonfun$recover$1.apply(Try.scala:215) [scala-library-2.11.6.jar:na]
    at scala.util.Try$.apply(Try.scala:191) [scala-library-2.11.6.jar:na]
    at scala.util.Failure.recover(Try.scala:215) [scala-library-2.11.6.jar:na]
    at scala.concurrent.Future$$anonfun$recover$1.apply(Future.scala:324) [scala-library-2.11.6.jar:na]
    at scala.concurrent.Future$$anonfun$recover$1.apply(Future.scala:324) [scala-library-2.11.6.jar:na]
    at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:32) [scala-library-2.11.6.jar:na]
    at play.api.libs.iteratee.Execution$trampoline$.executeScheduled(Execution.scala:109) [play-iteratees_2.11-2.4.6.jar:2.4.6]
    at play.api.libs.iteratee.Execution$trampoline$.execute(Execution.scala:71) [play-iteratees_2.11-2.4.6.jar:2.4.6]
    at scala.concurrent.impl.CallbackRunnable.executeWithValue(Promise.scala:40) [scala-library-2.11.6.jar:na]
    at scala.concurrent.impl.Promise$DefaultPromise.tryComplete(Promise.scala:248) [scala-library-2.11.6.jar:na]
    at scala.concurrent.Promise$class.complete(Promise.scala:55) [scala-library-2.11.6.jar:na]
    at scala.concurrent.impl.Promise$DefaultPromise.complete(Promise.scala:153) [scala-library-2.11.6.jar:na]
    at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:23) [scala-library-2.11.6.jar:na]
    at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:40) [akka-actor_2.11-2.3.13.jar:na]
    at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:397) [akka-actor_2.11-2.3.13.jar:na]
    at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) [scala-library-2.11.6.jar:na]
    at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) [scala-library-2.11.6.jar:na]
    at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) [scala-library-2.11.6.jar:na]
    at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) [scala-library-2.11.6.jar:na]

**Caused by: java.lang.NullPointerException: null**
    at mailer.MailerService.sendEmail(MailerService.java:17) ~[classes/:na]
    at controllers.Application.sendMailTest(Application.java:14) ~[classes/:na]
    at router.Routes$$anonfun$routes$1$$anonfun$applyOrElse$10$$anonfun$apply$10.apply(Routes.scala:324) ~[classes/:na]
    at router.Routes$$anonfun$routes$1$$anonfun$applyOrElse$10$$anonfun$apply$10.apply(Routes.scala:324) ~[classes/:na]
    at play.core.routing.HandlerInvokerFactory$$anon$4.resultCall(HandlerInvoker.scala:136) ~[play_2.11-2.4.6.jar:2.4.6]
    at play.core.routing.HandlerInvokerFactory$JavaActionInvokerFactory$$anon$14$$anon$3$$anon$1.invocation(HandlerInvoker.scala:127) ~[play_2.11-2.4.6.jar:2.4.6]
    at play.core.j.JavaAction$$anon$1.call(JavaAction.scala:70) ~[play_2.11-2.4.6.jar:2.4.6]

【问题讨论】:

  • 这个问题有什么问题?有些人使用否定标志代替建议。
  • 那不是我,但你需要添加错误的堆栈跟踪
  • 感谢@AndriyKuba。我添加了堆栈跟踪
  • “MailerClient mailerClient”未注入。请在“controllers.Application.sendMailTest”中添加如何初始化“MailerService”的代码

标签: java playframework


【解决方案1】:

您似乎错误地初始化了MailerClient

example 表明您需要将其注入控制器,该控制器本身由 Play 框架初始化。

你将它注入你自己的MailerService 类。我想你在controllers.Application.sendMailTest 中做了类似new MailerService() 的事情。结果,MailerClient 不会注入到MailerService 类中(如果你自己初始化MailerService,谁会这样做?)

解决方案: 您需要像示例中一样将MailerClient 注入控制器,然后将其传递给您的MailerService 类。

import play.libs.mailer.Email;
import play.libs.mailer.MailerClient;
public class MailerService {
  MailerClient mailerClient;

  public MailerService(MailerClient mailerClient){
    this.mailerClient = mailerClient;
  }

  public void sendEmail() {
    Email email = new Email();
    email.setSubject("Activation Link");
    email.setFrom("from@gmail.com");
    email.addTo("to@gmail.com");
    email.setBodyText("hello");
    mailerClient.send(email);
  }
}

【讨论】:

    猜你喜欢
    • 2016-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-02
    • 2014-12-28
    相关资源
    最近更新 更多