Изменен документ docx4j-core-8.3.8.jar для добавления пространства имен Word 2023, теперь класс WordprocessingMLPackage JAVA

Программисты JAVA общаются здесь
Anonymous
Изменен документ docx4j-core-8.3.8.jar для добавления пространства имен Word 2023, теперь класс WordprocessingMLPackage

Сообщение Anonymous »

Я работаю над веб-приложением Java, использующим docx4j для обработки файлов DOCX. Мне нужно было добавить поддержку пространства имен http://schemas.microsoft.com/office/wor ... l/word16du, поэтому я изменил класс org.docx4j.jaxb.NamespacePrefixMappings в docx4j-core-8.3.8. jar.
Кроме того, версия 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

Вернуться в «JAVA»