包com.sun.org.apache.xml.internal.security.utils.Base64不存在



我使用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)。Code助攻在类型上工作,并且展开jar显示源代码和二进制代码实际上也存在。

我尝试过清理项目,重建它,将源文件复制到一个全新的企业项目,并以管理员身份运行NetBeans,但都无济于事。任何关于如何解决这个问题的线索,非常感谢!

谢谢!

com.sun。*类不是Java API的一部分,您不应该依赖于它们。我建议使用Apache Commons Codec来做Base64编码。

正如Greg在对先前接受的答案的评论中指出的那样:

未来注意:在Java 8中,有一个java.util.Base64包。

由于它现在是作为标准Java API的一部分实现的,因此使用它而不是Apache Commons Codec可能更可取。考虑到这一点,我认为这应该作为一个答案发布。

API在Base64类中有许多方法来创建DecoderEncoder。支持以下类型的编码器和解码器:

  • Basic -使用RFC 4648和RFC 2045表1规定的"Base64字母表"进行编码和解码操作。编码器不添加任何换行(行分隔符)字符。解码器拒绝包含base64字母表以外的字符的数据。

  • URL和文件名安全 -使用RFC 4648表2中指定的"URL和文件名安全Base64字母表"进行编码和解码。编码器不添加任何换行(行分隔符)字符。解码器拒绝包含base64字母表以外的字符的数据。

  • MIME -使用RFC 2045表1中指定的"Base64字母表"进行编码和解码操作。编码后的输出必须以每行不超过76个字符表示,并使用回车'r'紧跟着换行'n'作为行分隔符。编码输出的末尾不添加行分隔符。在解码操作中忽略所有在base64字母表表中找不到的行分隔符或其他字符。

因此,例如,这是如何创建一个基本编码器和编码一个byte数组:

byte[] encodedArray = Base64.getEncoder().encode(someArrayToEncode);

对于org.apache.commons.codec.binary.Base64使用特定的方法(例如Base64.encodeBase64String())来替换Base64.encode

相关内容

  • 没有找到相关文章