Кроме того, версия docx4j-core-8.3.8.jar имеет зависимости, основанные на javax, тогда как более новые версии используют jakarta. Мне сложно перевести проект с Javax на Jakarta, поскольку в проекте все еще существуют зависимости от Javax.
Вот шаги, которые я выполнил:
- Декомпилировал docx4j-core-8.3.8.jar с помощью Krakatau.
- Изменил класс NamespacePrefixMappings, включив в него новое пространство имен. :
Код: Выделить всё
public class NamespacePrefixMappings {
// Other existing code...
public String getPreferredPrefix(String namespaceUri, String suggestion, boolean requirePrefix) {
if (namespaceUri.equals("http://schemas.microsoft.com/office/word/2023/wordml/word16du")) {
return "w16du";
}
// Existing namespace mappings...
}
// Other existing code...
}
- Перекомпилировал класс и заменил его в файле docx4j-core-8.3.8.jar
После развертывания обновленного JAR на моем сервере Tomcat я столкнулся со следующей ошибкой при попытке загрузить файл DOCX:
Вызвано: java.lang.ClassNotFoundException: org.docx4j.openpackaging.packages.WordprocessingMLPackage
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1308)
at org.apache. catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1120)
Вот шаги, которые я предпринял для устранения этой проблемы:< /strong> - Проверено, что файл docx4j-core-8.3.8.jar находится в каталоге WEB-INF/lib.
- Проверено наличие дубликатов версий файлов JAR docx4j в WEB-INF/lib.
- Убедилось, что мой pom.xml содержит необходимые зависимости:
< /ol>
Это автономное приложение работает нормально, что позволяет предположить, что проблема может быть связана с развертыванием веб-приложения.
Мои вопросы: - Что может быть причиной исключения ClassNotFoundException для WordprocessingMLPackage в веб-приложении, но не в автономном приложении?
- Есть ли такое исключение определенные конфигурации или шаги, которые я мог пропустить при изменении JAR-файла docx4j-core и его повторном развертывании в среде Tomcat?
- Может ли проблема быть связана с загрузчиком классов в Tomcat, и если да, то как я могу решить эту проблему?
Будем очень признательны за любые рекомендации и предложения.
- Tomcat 9
- JDK 1.8.0_292
- docx4j-core-8.3.8 .jar
Подробнее здесь: https://stackoverflow.com/questions/788 ... cessingmlp