Пакет com.солнце.орг."Апач".в формате XML.внутренние.безопасности.а utils.В base64 не существует
Я использую NetBeans 7.0.1 и JDK 1.6 Update 24 и при импорте пакета com.sun.org.apache.xml.internal.security.utils.Base64
для кодирования хэша пароля:
u.setPassword(Base64.encode(digest(password)));
при компиляции, я получаю следующую ошибку:
(omitted)RegistrationController.java:8: package com.sun.org.apache.xml.internal.security.utils does not exist
import com.sun.org.apache.xml.internal.security.utils.Base64;
(omitted)RegistrationController.java:94: cannot find symbol
symbol : variable Base64
location: class RegistrationController
u.setPassword(Base64.encode(digest(password)));
2 errors
Я прочитал несколько других вопросов, касающихся той же проблемы, но все дело с пакетами, которые не являются частью JDK, тогда как это (rt.jar
). Code Assists работает над типом, и расширение jar показывает, что исходный код и двоичный файл фактически присутствуют как что ж.
Я попытался очистить проект, перестроить его, скопировать исходные файлы в новый корпоративный проект и запустить NetBeans в качестве администратора, все безрезультатно. Любая подсказка о том, как это решить, очень ценится!
спасибо!
3 ответов
As Грег указал в комментарии к ранее принятый ответ:
Примечание из будущего: в Java 8 есть
java.util.Base64
пакета.
поскольку он теперь реализован как часть стандартного API Java, вероятно, предпочтительнее использовать его вместо кодека Apache Commons. Имея это в виду, я думаю, что это должно быть опубликовано в качестве ответа.
API имеет несколько методов в классе Base64
создать Decoder
или Encoder
. Поддерживаются следующие типы кодеров и декодеров:
Basic - использует "алфавит Base64", как указано в Таблице 1 RFC 4648 и RFC 2045 для операции кодирования и декодирования. Кодировщик не добавляет никакого символа подачи строки (разделителя строк). Декодер отклоняет данные, содержащие символы за пределами base64 алфавит.
URL и имя файла safe - использует "URL и имя файла safe Base64 алфавит", как указано в таблице 2 RFC 4648 для кодирования и декодирования. Кодировщик не добавляет никакого символа подачи строки (разделителя строк). Декодер отклоняет данные, содержащие символы вне алфавита base64.
МИМ - использует "алфавит Base64", как указано в Таблице 1 RFC 2045 для кодирования и декодирования операция. Закодированные выходные данные должны быть представлены в строках не более 76 символов каждый и использует возврат каретки "\r", за которым немедленно следует строка "\n " в качестве разделителя строк. В конец закодированного вывода не добавляется разделитель строк. Все разделители строк или другие символы, не найденные в таблице алфавита base64, игнорируются в операции декодирования.
так, например, это как создать базовый кодировщик и перекодировать byte
массив:
byte[] encodedArray = Base64.getEncoder().encode(someArrayToEncode);
com.солнце.* классы не являются частью API Java, и вы не должны полагаться на них. Я бы предложил использовать Кодек Apache Commons вместо этого сделать кодировку Base64.
С org.apache.commons.codec.binary.Base64
используйте конкретный метод (например,Base64.encodeBase64String()
например) заменить Base64.encode