java.lang.NoClassDefFoundError:sun/misc/BASE64Encoder

Max*_*lah 8 java http

我想用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);
Run Code Online (Sandbox Code Playgroud)

我收到错误:401/Unutorized ... java.lang.NoClassDefFoundError:sun/misc/BASE64Encoder

我有什么办法可以尝试吗?

Jes*_*per 11

Oracle已经宣布删除 Java 9中的这些类.

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

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

而不是使用类sun.misc.BASE64Encoder:

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

否则,使用第三方库,例如类org.apache.commons.codec.binary.Base64Apache的百科全书编解码器.

  • 谢谢。使用 org.apache.commons.codec.binary.Base64 解决了这个问题。 (3认同)