我在添加新的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)
答案 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个版本。