java.lang.NoClassDefFoundError:sun / misc / BASE64Encoder

时间:2015-04-17 06:46:37

标签: 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);

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

我可以尝试任何解决方案吗?

1 个答案:

答案 0 :(得分:9)

Oracle在Java 9中有这些类的announced the removal

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

请参阅Oracle的文档中的Why Developers Should Not Write Programs That Call 'sun' Packages

而不是使用课程sun.misc.BASE64Encoder

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

否则,请使用第三方库,例如来自org.apache.commons.codec.binary.Base64的课程Apache Commons Codec