Я управляю веб -приложением Tomcat/JSP. Мы обновляем наш исходный код, чтобы соответствовать недавнему изменению Javax -> Jakarta пространство имен в пакете сервлетов. Класс: < /p>
Код: Выделить всё
org.apache.commons.fileupload.disk.DiskFileItem
< /code>
fileupload v2 содержит соответствующий класс < /p>
org.apache.commons.fileupload2.core.DiskFileItem
Наш код веб -приложения, написанный для V1, расширяет DiskFileItem :
Код: Выделить всё
public class MonitoredDiskFileItem extends DiskFileItem
{
private MonitoredOutputStream mos = null;
private OutputStreamListener listener;
public MonitoredDiskFileItem(String fieldName, String contentType, boolean isFormField, String fileName, int sizeThreshold, File repository, OutputStreamListener listener)
{
super(fieldName, contentType, isFormField, fileName, sizeThreshold, repository);
this.listener = listener;
}
public OutputStream getOutputStream() throws IOException
{
if (mos == null)
{
mos = new MonitoredOutputStream(super.getOutputStream(), listener);
}
return mos;
}
}
Это разрывается с обновлением, выбрасывая ошибку ошибки: не может наследовать от окончательного Diskfileitem . Предположительно, авторы изменили класс DiskFileItem на Final по версиям. Страница Apache Commons Github не допускает проблем, поэтому я даже не могу спрашивать там. Я знаю, что я мог бы собрать свою собственную версию исходного кода без окончательного ключевого слова в diskfileitem.class , но я должен предположить, что для него есть причина и что это нарушит другие аспекты кода. Я очень надеюсь, что есть более простое решение. Я системный администратор, а не программист, поэтому я не могу переписать пакет с нуля.
Подробнее здесь:
https://stackoverflow.com/questions/796 ... em-for-the