Как решить ошибки «Необработанное исключение типа ClassNotFoundException» и «Вектор — это необработанный тип»?

#java #servlets #applet

#java #сервлеты #апплет

Вопрос:

На стороне сервлета я пытаюсь получить вектор, отправленный из апплета. Код похож

 InputStream in = request.getInputStream();
ObjectInputStream inputFromApplet = new ObjectInputStream(in);
Vector v = (Vector) inputFromApplet.readObject();
  

Но компилятор указывает, что следующее является неправильным.

 Vector v = (Vector) inputFromApplet.readObject();
  

Сообщение об ошибке является

Несколько маркеров в этой строке

  • Необработанное исключение типа ClassNotFoundException
  • Вектор — это необработанный тип. Ссылки на универсальный тип Vector должны быть параметризованы
  • Вектор — это необработанный тип. Ссылки на универсальный тип Vector должны быть параметризованы

Что не так с моим кодом? Спасибо.

Ответ №1:

Для исключения оберните свой код в

 try {
   <your code here>
} catch (ClassNotFoundException e) {
   <code that happens when class can't be found>
}
  

Другие сообщения являются предупреждениями, которые не остановят компиляцию вашей программы. Они относятся к необходимости параметра в параметризованных типах для соответствия новым спецификациям (начиная с Java 1.5). Итак, если вы хотите сохранить целые числа в векторе, используйте Vector<Integer> . Это изменяет методы на require Integers вместо универсального Object , который вы обычно получаете, и повышает безопасность типов.

Ответ №2:

Вы хотите указать тип данных для vector — например

 Vector<String> v = ...
  

Однако String может быть не лучшим выбором для вашего приложения.

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

1. Вы не можете использовать примитивный тип данных в качестве универсального аргумента.

2. Хороший улов — изменен с int на String.