2011-08-18 4 views
8

Я использую NetBeans 7.0.1 и JDK 1.6 Update 24 и при импорте пакета com.sun.org.apache.xml.internal.security.utils.Base64 для кодирования хэш пароля:пакет 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 работает над типом и расширяет банку, и на самом деле присутствуют как исходный код, так и двоичный файл.

Я пробовал очистить проект, перестроить его, скопировать исходные файлы на совершенно новый проект предприятия и запустить NetBeans в качестве администратора, но все это безрезультатно. Любая подсказка о том, как это решить, очень ценится!

Спасибо!

ответ

20

com.sun. * Классы не являются частью Java API, и вы не должны полагаться на них. Я бы предложил использовать Apache Commons Codec вместо кодировки Base64.

+1

Спасибо! Я не знал об этом. Я заменил 'com.sun.org.apache.xml.internal.security.utils.Base64' на' org.apache.commons.codec.binary.Base64; '. – Laurens

+1

Но в этих двух методах нет одинаковых методов? Не помогая в моем случае :( – Sami

+5

Примечание от будущего: в Java 8 есть пакет 'java.util.Base64'. – Greg

2

С org.apache.commons.codec.binary.Base64 использования конкретного метода (например, Base64.encodeBase64String(), например), чтобы заменить Base64.encode

Смежные вопросы