Сначала - вставь больше!
Синтаксис, который вы вставили, неверен. У вас есть свисающий блок try без улова или, наконец, ... Я бы ошибся, вставив сюда больше информации, чем меньше ... Вставьте весь метод и поместите комментарий в строку 156, чтобы указать, что это.
Что означает NPE?
Как уже упоминали другие, трассировка стека является нулевой разыменовкой внутри вашего метода где-то. Один из объектов, к которым вы пытались получить доступ к чему-либо (переменная-член или метод, использующий оператор .
), является нулевым. Мы можем вывести это из вашей трассировки стека, но не имеет смысла код, который вы вставили с ним. Нам нужно больше, чтобы помочь разобраться.
Напишите модульный тест для определения вызовов API
Кроме того, я бы написал модульный тест , чтобы узнать, как работать с этим API, прежде чем представлять сложность API сервлетов и журналирования.
Вы можете увидеть, как они тестировали API FileUpload, взглянув на их Test Suite . Вы можете повторно использовать их MockHttpServletRequest (хотя это действительно поддельный объект, а не mock объект) для аналогичного тестирования.
Примечание. Возможно, вы захотите вернуться назад и посмотреть версии этих файлов, которые соответствуют версии вашего файла FileUpload.
Указатели отладки
Для отладки вот что я сделаю:
Я бы остановил первую строку в методе в верхней части вашей трассировки стека и посмотрел на локальные переменные наблюдения, пока я шагал по методам. Как только вы найдете и избавитесь от NullPointerException
, присоедините источник FileUpload и войдите в него, чтобы убедиться, что вы действительно вводите этот код, если после этого у вас получится другое исключение, специфичное для FileUpload.
Удачи!