2013-02-04 103 views
0

當我在添加新的AUTH XOAUTH2命令後嘗試編譯我的項目時出現以下錯誤。issueCommand(java.lang.String,int)在com.sun.mail.smtp.SMTPTransport中有私人訪問編譯錯誤

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

那麼添加選項後輸出是什麼? – Strelok

+0

輸出變成這樣[[javac])注:某些輸入文件使用或覆蓋棄用的API。 [javac]注意:使用-Xlint:deprecation重新編譯以獲取詳細信息。 [javac] 1 error] – kitokid

+0

我甚至使用,但無法解決問題。 – kitokid

回答

0
  • javap com.sun.mail.smtp.SMTPTransport報告公共同步無效issueCommand(java.lang.String中,INT)拋出javax.mail .MessagingException;用於JavaMail 1.4.4。

  • Javadoc說這個方法是@since 1.4.1。

所以這個方法是公開的,而不是私有的。

因此你必須有另一個版本的郵件 - *。jar放在某處。否則,你描述的情況將是不可能的。否則,由於某種原因,您有自己的兼容com.sun.mail.smtp.SMTPTransport類。

否則該方法在JavaMail 1.4中是私有的,並且您尚未升級JavaMail,您當然應該這樣做,因爲您的後面有5個版本。

+0

這很奇怪。我剛剛下載了最新的一個Java郵件1.4.5,以確保我使用的lib是最新的。我仍然面臨同樣的問題:(http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-eeplat-419426.html#javamail-1.4.5-oth-JPR – kitokid

+0

@ kitokid然後,正如我一直在說的,你有另一個老版本,或者你自己的版本 – EJP

+0

你是正確的。項目中有另一個郵件lib的副本。刪除它後,確定:D – kitokid

相關問題