Согласно документации OSGi, OSGi предназначена для предотвращения проблем ClassPath.
Например, из «OSGi в действии»:
ClassNotFoundExceptions при запуске приложения, поскольку
путь к классу был неправильным. OSGi может помочь, гарантируя, что код
зависимости выполняются перед тем, как разрешить выполнение кода.
Однако, поскольку мы переключили наше java-приложение на OSGi, я вижу больше ClassNotFoundExceptions и особенно NoClassDefFoundErrors, чем когда-либо. Классы, которые ранее загружались нормально, больше не обнаруживаются загрузчиком классов OSGI, и еще хуже: вы получаете ошибку во время выполнения, а это значит, что вы не можете легко ее проверить, кроме как вручную проверяя каждый угол вашего приложения.
Например, наше приложение успешно работало под OSGi, но мы получили сообщения от бета-тестеров, что они больше не могут экспортировать документы в PDF. Действительно, когда я посмотрел на нее, я обнаружил, что эта функция вызвала исключение для регистрации:
java.lang.NoClassDefFoundError: org/w3c/dom/Node
Итак, создает ли OSGi больше проблем с classpath, чем решает?
и, что более важно: как я могу проверить, что мой путь к классам согласован со всеми необходимыми операторами Import-Package и т. Д. до Я читал о них в отчетах об ошибках?