![](/img/trans.png)
[英]Is there any difference between org.apache.commons.codec.binary.Base64 & com.sun.org.apache.xml.internal.security.utils.Base64?
[英]Package com.sun.org.apache.xml.internal.security.utils.Base64 does not exist
我正在使用NetBeans 7.0.1和JDK 1.6 Update 24,並在導入包com.sun.org.apache.xml.internal.security.utils.Base64
以編碼密碼哈希時:
u.setPassword(Base64.encode(digest(password)));
但是在編譯時,我收到以下錯誤:
(omitted)\RegistrationController.java:8: package com.sun.org.apache.xml.internal.security.utils does not exist
import com.sun.org.apache.xml.internal.security.utils.Base64;
(omitted)\RegistrationController.java:94: cannot find symbol
symbol : variable Base64
location: class RegistrationController
u.setPassword(Base64.encode(digest(password)));
2 errors
我已經閱讀了有關同一問題的其他幾個問題,但所有問題都涉及不屬於JDK的軟件包,而這是( rt.jar
)。 代碼輔助工作在類型上並擴展jar顯示源代碼和二進制文件實際上也存在。
我已經嘗試清理項目,重建它,將源文件復制到一個全新的Enterprise項目並以管理員身份運行NetBeans,但都無濟於事。 關於如何解決這個問題的任何線索非常感謝!
謝謝!
com.sun。*類不是Java API的一部分,您不應該依賴它們。 我建議使用Apache Commons Codec代替Base64編碼。
未來的注意事項:在Java 8中,有一個
java.util.Base64
包。
由於它現在作為標准Java API的一部分實現,因此最好使用它而不是Apache Commons Codec。 考慮到這一點,我認為這應該作為答案發布。
API在Base64
類中有許多方法來創建Decoder
或Encoder
。 支持以下類型的編碼器和解碼器:
Basic - 使用RFC 4648和RFC 2045的表1中指定的“Base64 Alphabet”進行編碼和解碼操作。 編碼器不添加任何換行(行分隔符)字符。 解碼器拒絕包含base64字母表之外的字符的數據。
URL和文件名安全 - 使用RFC 4648表2中指定的“URL和文件名安全Base64字母”進行編碼和解碼。 編碼器不添加任何換行(行分隔符)字符。 解碼器拒絕包含base64字母表之外的字符的數據。
MIME - 使用RFC 2045的表1中指定的“Base64 Alphabet”進行編碼和解碼操作。 編碼輸出必須以不超過76個字符的行表示,並使用回車符'\\ r',后面緊跟一個換行符'\\ n'作為行分隔符。 沒有行分隔符添加到編碼輸出的末尾。 在解碼操作中將忽略base64字母表中未找到的所有行分隔符或其他字符。
因此,例如,這是如何創建基本編碼器和編碼byte
數組:
byte[] encodedArray = Base64.getEncoder().encode(someArrayToEncode);
使用org.apache.commons.codec.binary.Base64
使用特定方法(例如Base64.encodeBase64String()
)替換Base64.encode
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.