issueCommand(java.lang.String,int)在com.sun.mail.smtp.SMTPTransport编译错误中具有私有访问权限

时间:2013-02-04 02:13:33

标签: java ant compiler-errors

我在添加新的AUTH XOAUTH2命令后尝试编译项目时遇到以下错误。

  byte[] response = String.format("user=%s\1auth=Bearer %s\1\1", msg.getFrom(),
            token).getBytes();

    response = BASE64EncoderStream.encode(response);
    transport.issueCommand("AUTH XOAUTH2 " + new String(response), 235);


issueCommand(java.lang.String,int) has private access in com.sun.mail.smtp.SMTPTransport
[javac] Note: Some input files use or override a deprecated API.
[javac] Note: Recompile with -Xlint:deprecation for details.
[javac] Note: Some input files use unchecked or unsafe operations.
[javac] Note: Recompile with -Xlint:unchecked for details.
[javac] 1 error

我尝试包含<compilerarg value="-Xlint:unchecked"/>,但仍无法解决问题。所以我添加了另一个<compilerarg value="-Xlint:deprecation"/>。但仍然说有错误。

这是编译xml信息。

<javac source="1.6" target="1.6" srcdir="${src}" destdir="${build}" deprecation="no" debug="yes" listfiles="no">

注意:我使用的是Javamail 1.4版本 Java类版本:1.4(48.0)

1 个答案:

答案 0 :(得分:0)

  • javap com.sun.mail.smtp.SMTPTransport报告public synchronized void issueCommand(java.lang.String,int)抛出javax.mail.MessagingException; for JavaMail 1.4.4。

  • Javadoc说方法是@since 1.4.1。

所以这个方法是公开的,而不是私人的。

因此你必须有另一个版本的邮件 - * .jar在某处。否则你描述的情况是不可能的。或者你出于某种原因拥有自己不兼容的com.sun.mail.smtp.SMTPTransport类。

或者该方法在JavaMail 1.4中是私有的,你还没有升级JavaMail,你当然应该这样做,因为你已经落后了5个版本。