Restriction d’accès: le type BASE64Encoder n’est pas accessible en raison d’une restriction

Restriction d'accès: le type BASE64Encoder n'est pas accessible en raison d'une restriction

Problème

Téléchargé un échantillon Java à partir deAlexa API on Amazon service, l'importe dans Eclipse, mais impossible de compiler et rencontre les erreurs «Access restriction»:

Access restriction: The type BASE64Encoder is not accessible due to restriction
on required library
/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/classes.jar

P.S Using JDK 1.6 and Eclipse IDE 4.2

import sun.misc.BASE64Encoder; // Access restriction error

   //...
   result = new BASE64Encoder().encode(rawHmac);

Solution

L'utilisation du packagesun.* doit être évitée, lisez cestatement.

Si vous insistez pour utilisersun.misc.BASE64Encoder, dans Eclipse, faites un clic droit sur le projet, propriétés → Compilateur Java -> Erreurs / Avertissements -> API obsolète et restreinte -> Référence interdite (règles d'accès), changez la valeur par défaut «Error ”à“Warning “. Maintenant, votre code devrait pouvoir être compilé, mais avec quelques messages d'avertissement.

eclipse-access-rules-error

La solution ci-dessus n'est pas recommandée, vous devez remplacersun.misc.BASE64Encoder par une autre classe BASE64 commeApache common codec.

import org.apache.commons.codec.binary.Base64;

    //...
    result = new Base64().encodeToString(rawHmac);