JAR-файлы зависимостей апплета с несовместимым Class-Path в MANIFEST.MF

мой апплет зависит от двух библиотек JAR. Каждая библиотека JAR имеет зависимость от xercesImpl-2.2.1.jar. К сожалению, они хотят, чтобы это имело разные имена:

  • Апач ФОП 0.20.5

    • Entry in META-INF/MANIFEST.MF: Class-Path: xercesImpl-2.2.1.jar...
  • Апач Ксалан 2.4.1

    • Entry in META-INF/MANIFEST.MF: Class-Path: xercesImpl.jar...

xercesImpl-2.2.1.jar указан в теге. Я вижу в консоли Java, что он успешно загружен. Однако позже консоль показывает попытку прочитать файл xercesImpl.jar, которого не существует. Это должно быть получено из манифеста Xalan, потому что код веб-приложения нигде не указывает xercesImpl.jar. Очевидно, что на самом деле у него уже есть содержимое этого JAR-файла, поэтому его фактически не нужно загружать.

Я использую Maven для управления зависимостями и хотел бы продолжать использовать эти две стандартные общедоступные библиотеки с открытым исходным кодом, не взламывая их манифесты. Любые предложения по лучшему способу решения этой проблемы - или мне просто жить с ложной ошибкой в ​​​​консоли Java?


person Anthony Hayward    schedule 10.01.2011    source источник


Ответы (2)


Я не знаток Maven, но вам, вероятно, лучше оставить зависимости в покое и каким-то образом поставить перед проектом «цель», которая включает в себя переупаковку одного из JAR-файлов, как только они будут «в "Ваш проект.

Возможно, один из способов сделать это — сделать так, чтобы артефакт «переупакованный JAR» зависел от артефакта «фоп», а ваш проект зависел от артефакта «переупакованный JAR». Что-то такое.

person David Bullock    schedule 10.01.2011
comment
На самом деле я закончил тем, что сделал что-то вроде этого. Я упаковал JAR и его зависимости в один JAR с помощью плагина Maven Shade, поэтому теперь не требуются зависимости JAR. - person Anthony Hayward; 15.02.2011

Вот моя последняя слегка хакерская идея. Я создал действительные пустые файлы JAR без классов в них и назвал их именами записей в Class-Path, например, xercesImpl.jar . Я собираюсь поместить их в src/main/webapp, чтобы они были включены в нужное место. Затем плагин Java с радостью загрузит их, а не зарегистрирует ошибку.

Таким образом, мне нужно только взломать веб-контент (что в любом случае беспорядок), а не возиться с JAR-файлами библиотеки, зависимостями Maven или процессом сборки.

Все еще открыт для любых лучших предложений...

person Anthony Hayward    schedule 03.02.2011