Получение исключения ClassNotFoundException для класса Validator

#java #jsf

#java #jsf

Вопрос:

Я пытаюсь изучить JSF, выполняя демонстрационный проект. Когда я пытаюсь добавить validator к некоторым компонентам, я получаю java.lang.Исключение ClassNotFoundException: com.test.validator.TestValidator

Мой faces-config выглядит следующим образом

     <validator>
    <validator-id>Validator</validator-id>
    <validator-class>com.test.validator.TestValidator</validator-class>
    </validator>
  

Класс Validator

 public class TestValidator implements Validator {


    @Override
    public void validate(FacesContext context, UIComponent componentToValidate,
            Object value) throws ValidatorException {
        //Add code

    }

}
  

и, наконец, facelet

      <f:validator validatorId="Validator"></f:validator>
  

Я не уверен, что я чего-то не хватает. Мы ценим любую помощь. Спасибо

Комментарии:

1. есть ли у вас объявление пакета в классе validator?

2. Я добавил объявление пакета в класс validator.

Ответ №1:

Я могу придумать несколько возможных причин:

  • У класса TestValidator отсутствует package объявление, поэтому вы фактически объявили его в пакете по умолчанию … как отметил @Jigar Joshi.

  • Вы его не скомпилировали.

  • Вы не создали / обновили JAR, содержащий класс.

  • Вы не включили JAR в WAR / EAR.

  • В WAR / EAR (или веб-сервере) отсутствует файл JAR, содержащий некоторый класс, от которого зависит ваш TestValidator. (Кажется маловероятным …)

  • Вы не перераспределили WAR / EAR.

Комментарии:

1. Я использую Eclipse helios и Glass fish в качестве веб-сервера, поэтому я думаю, что большинство проблем, указанных выше, будут решены автоматически. Можете ли вы указать мне какие-либо недостающие шаги. Я уверен, что объявление пакета есть, и класс скомпилирован.

2. Найдите в развернутом веб-приложении файл JAR, содержащий этот класс, и убедитесь, что класс находится в файле JAR и что его путь в файле JAR правильный.

3. Большое спасибо Стивену за подробный ответ и последующую помощь. Теперь это работает.