Что касается нашего недавнего перехода от WSED 5.2 в RAD 7.5, в нашем коде появилась ошибка обмана приложения.Конфликт между StaticWriter и Writer Классы
RAD 7.5 маркирует константы выглядит, все в декларации заголовка класса (открытый класс FoStringWriter расширяет StringWriter реализует FoWriter {)
- Exception IOException in throws clause of Writer.append(CharSequence, int, int) is not compatable with StringWriter.append(CharSequence, int, int)
- Exception IOException in throws clause of Writer.append(char) is not compatable with StringWriter.append(char)
- Exception IOException in throws clause of Writer.append(CharSequence) is not compatable with StringWriter.append(CharSequence)
Каждая часть литературы я смог найти на веб указывает на это «ошибка» в Eclipse, но у моего разработчика уже должна быть последняя версия программного обеспечения Eclipse. Поэтому я не знаю, что делать с этой ошибкой. Есть ли исправление от IBM, которое я просто еще не обновил? Или есть исправление кода, которое могло бы устранить эту ошибку?
public class FoStringWriter extends StringWriter implements FoWriter {
public void filteredWrite(String str) throws IOException {
FoStringWriter.filteredWrite(str,this);
}
public static void filteredWrite(String str, StringWriter writer) throws IOException {
if (str == null) str = "";
TagUtils tagUtils = TagUtils.getInstance();
str = tagUtils.filter(str);
HashMap dictionary = new HashMap();
dictionary.put("&#","&#");
str = GeneralUtils.translate(str,dictionary);
writer.write(str);
}
}
Editory Примечание:
Процесс, что это работает, создает PDF документы для нашего приложения. В WSED 5.5 он работал, имел несколько ошибок, но ничего не мешало писать PDF.
Есть ли причина сделать 'FoStringWriter' подкласс класса' StringWriter'? Сделать его подклассом 'FilterWriter', который делегирует произвольный' Writer' (который * может * быть 'StringWriter'), кажется, более естественным. И это может решить вашу проблему компиляции как побочный эффект. – Holger
@Holger Я пробовал это по вашему предложению, но, похоже, для меня совершенно другая проблема. Исключено исключение, созданное в одном из сервисных методов действия сервлета в приложении wpm. Исключение создано: javax.servlet.ServletException: java.lang.NoSuchMethodError: ny/dol/wpm/pdf/FoStringWriter. (Ljava/io/Writer;) V Обратите внимание, что мне пришлось изменить вызов FoStringWriter в других классах, потому что нет конструктора FilterWrite, у которого нет параметра, который был ранее вызван FoStringwriter. Мне также пришлось добавить конструктор (писатель). –
Zibbobz
«NoSuchMethodError» указывает, что не все классы были обновлены правильно. Кстати, добавить к конструктору по умолчанию новый 'FoStringWriter', который создает' StringWriter' как target 'Writer' и передает его суперструктору. Но большая проблема заключается в том, что ошибка говорит о том, что конструктор, берущий автора, не найден, поэтому сам класс FoStringWriter не обновлен. – Holger