oxygen - telecharger eclipse java windows 10 64 bits gratuit




L'import de sun.misc.BASE64Encoder génère une erreur compilée dans Eclipse. (8)

  1. Accédez aux paramètres du chemin de construction dans les propriétés du projet.
  2. Supprimer la bibliothèque système JRE
  3. Rajoutez-le Sélectionnez "Ajouter une bibliothèque" et sélectionnez la bibliothèque système JRE. Le défaut a fonctionné pour moi.

Cela fonctionne parce que vous avez plusieurs classes dans différents fichiers JAR. En supprimant et en rajoutant jre lib, les bonnes classes seront les premières. Si vous voulez une solution fondamentale, assurez-vous d’exclure les fichiers jar avec les mêmes classes.

Pour cela deux importations;

import sun.misc.BASE64Encoder;
import sun.misc.BASE64Decoder;

J'ai eu cette erreur:

Access restriction: The type BASE64Decoder is not accessible due to restriction on required library C:\Program Files\Java\jre6\lib\rt.jar

Comment puis-je résoudre cette erreur?


Ajoutez le fichier jar base64decoder et essayez les importations suivantes:

import Decoder.BASE64Decoder;
import Decoder.BASE64Encoder;


Cette erreur (ou cet avertissement dans les versions ultérieures) se produit car vous compilez avec un environnement d'exécution Java. Cela apparaît comme JRE System library [CDC-1.0/Foundation-1.0] dans le chemin de génération de votre projet Eclipse Java. De tels environnements n'exposent que l'API standard Java au lieu de toutes les classes du runtime. Cela signifie que les classes utilisées pour implémenter l'API standard Java ne sont pas exposées.

Vous pouvez autoriser l'accès à ces classes particulières à l'aide de règles d'accès, configurer Eclipse pour utiliser directement le JDK ou désactiver l'erreur. Cependant, vous cachez une erreur grave, car les classes internes de Sun ne doivent pas être utilisées (voir ci-dessous pour une brève explication).

Java contient une Base64 dans l'API standard depuis Java 1.8. Voir ci-dessous pour un exemple d'utilisation:

Déclaration d'importation Java 8:

import java.util.Base64;

Exemple de code Java 8:

// create a byte array containing data (test)
byte[] binaryData = new byte[] { 0x64, 0x61, 0x74, 0x61 };
// create and configure encoder (using method chaining) 
Base64.Encoder base64Encoder = Base64.getEncoder().withoutPadding();
// encode to string (instead of a byte array containing ASCII)
String base64EncodedData = base64Encoder.encodeToString(binaryData);

// decode using a single statement (no reuse of decoder)
// NOTE the decoder won't fail because the padding is missing
byte[] base64DecodedData = Base64.getDecoder().decode(base64EncodedData);

Si Java 8 n'est pas disponible, une bibliothèque telle qu'Apache Commons Codec ou Guava doit être utilisée.

Les classes internes de Sun ne doivent pas être utilisées . Ces classes sont utilisées pour implémenter Java. Ils ont des méthodes publiques pour permettre l'instanciation à partir d'autres packages. Un bon environnement de construction devrait toutefois vous protéger de leur utilisation.

L'utilisation de classes internes peut rompre la compatibilité avec les environnements d'exécution Java SE futurs. l'implémentation et l'emplacement de ces classes peuvent changer à tout moment. Il est fortement déconseillé de désactiver l'erreur ou l'avertissement.


Cette erreur est due à l'importation en dessous de deux classes. Import sun.misc.BASE64Encoder; importer sun.misc.BASE64Decoder ;. Maybe you are using encode and decode of that library like below.

new BASE64Encoder().encode(encVal);
newBASE64Decoder().decodeBuffer(encryptedData);

Oui, au lieu de sun.misc.BASE64Encoder, vous pouvez importer la classe java.util.Base64 .Maintenant, changez la méthode de codage précédente comme ci-dessous.

encryptedData=Base64.getEncoder().encodeToString(encryptedByteArray);

Maintenant changez la méthode de décodage précédente comme ci-dessous

byte[] base64DecodedData = Base64.getDecoder().decode(base64EncodedData);

Maintenant que tout est terminé, vous pouvez enregistrer votre programme et le lancer. Il fonctionnera sans montrer aucune erreur.


J'ai eu ce problème sur jdk1.6.0_37. C'est le seul JDE / JRE sur mon système. Je ne sais pas pourquoi, mais ce qui suit a résolu le problème:

Projet -> Propriétés -> Chemin de construction Java -> Bibliothèques

Basculez le bouton radio de l' environnement d'exécution sur Alernate JRE . Ceci sélectionne le même jdk1.6.0_37, mais l’erreur de compilation disparaît après nettoyage / compilation.

Peut-être que des éclaircissements dans la réponse de ram (le 16 mars à 9 heures) doivent faire quelque chose avec cela.


Java 6 expédie le javax.xml.bind.DatatypeConverter . Cette classe fournit deux méthodes statiques prenant en charge les mêmes décodages et encodages:

parseBase64Binary() / printBase64Binary()

Mise à jour: Depuis Java 8, le support Base64 bien meilleur.

Utilisez ceci et vous n'aurez pas besoin d'une bibliothèque supplémentaire, comme Apache Commons Codec .


Je sais que c'est très vieux post. Puisque nous n'avons rien de sun.misc dans Maven, nous pouvons facilement utiliser

StringUtils.newStringUtf8 (Base64.encodeBase64 (encVal)); De org.apache.commons.codec.binary.Base64





eclipse