java.lang.NoClassDefFoundError: sun/misc/BASE64Encoder

2022-09-03 13:19:40

我想用java代码连接一些域。我可以按如下方式在浏览器中连接域:http://username:password@domain.com

我尝试了以下方法:

    String enc = "username" + ":" + "password";
            String encoded = new sun.misc.BASE64Encoder().encode(loginPassword.getBytes());
URL url = new URL("domain.com");
            URLConnection conn = url.openConnection();
            conn.setRequestProperty ("Authorization", "Basic " + encoded);

我收到错误:401 /未初始化...java.lang.NoClassDefFoundError: sun/misc/BASE64Encoder

有什么解决方案我可以尝试吗?


答案 1

Oracle已宣布在Java 9中删除这些类。

您不应该使用包中的类 - 这些类不是Java的公共API的一部分,并且可以在任何新的Java版本中更改。sun.*

请参阅 Oracle 文档中的开发人员为何不应编写调用“sun”包的程序

不使用类 :sun.misc.BASE64Encoder

如果您使用的是 Java 8,则使用类 java.util.Base64 进行 Base 64 编码和解码。

否则,请使用第三方库,例如 Apache Commons 编解码器中的类 org.apache.commons.codec.binary.Base64


答案 2

推荐