我在我的sbt构建文件中使用以下内容(版本在构建文件中提到):
"javax.mail" % "javax.mail-api" % "1.5.5",
"javax.mail" % "mail" % "1.4.7",
我可以在一台计算机上运行运行以下代码的应用程序,但不能运行另一台计算机。我已经尝试清理常春藤缓存并重新加载javax邮件包,但这没有帮助。知道我可能做错了什么吗?
final Transport transport = session.getTransport(prop.getProperty("mail.smtp.protocol"));
transport.connect(prop.getProperty("smtp.username"), "");
正在使用的属性不是null并且正在一台计算机上本地使用(也是在我遇到问题的同一台计算机上的另一个进程 - 该进程不再在该计算机上运行且不应该打开运输连接)。
异常
java.lang.NoSuchMethodError: com.sun.mail.util.TraceInputStream.<init>(Ljava/io/InputStream;Lcom/sun/mail/util/MailLogger;)V
at com.sun.mail.smtp.SMTPTransport.initStreams(SMTPTransport.java:2014)
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1936)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:654)
at javax.mail.Service.connect(Service.java:291)
at javax.mail.Service.connect(Service.java:172)
at javax.mail.Service.connect(Service.java:192)
com.sun.mail.smtp.SMTPTransport v1.4.7
private void More ...initStreams() throws IOException {
2011 boolean quote = PropUtil.getBooleanSessionProperty(session,
2012 "mail.debug.quote", false);
2013
2014 traceInput =
2015 new TraceInputStream(serverSocket.getInputStream(), traceLogger);
有关如何对此进行故障排除的任何想法?我试过在debug中运行会话:
session.setDebug(true);
我认为它不是防火墙问题,因为我可以使用相同的SMTP配置(主机/端口/凭证)运行另一个进程,并且能够连接而没有任何异常。
答案 0 :(得分:2)
问题是由构建文件中的传递依赖引起的(其中另一个依赖是为应用程序提取旧版本的javax.mail)。排除传递依赖(使用sbt中的排除规则)应该解决问题。
答案 1 :(得分:1)
此错误与类路径中缺少smtp.jar
有关。
您可以将其作为JavaMail API here
的一部分下载