OSGi: как обеспечить согласованность путей к классам?

Согласно документации OSGi, OSGi разработан, чтобы помочь предотвратить проблемы ClassPath.

Например, из «OSGi в действии»:

ClassNotFoundExceptions при запуске приложения из-за неправильного пути к классу . OSGi может помочь, убедившись, что зависимости кода удовлетворяются, прежде чем разрешить выполнение кода.

Однако, поскольку мы переключили наше Java-приложение на OSGi, я вижу больше ClassNotFoundExceptions и особенно NoClassDefFoundErrors, чем когда-либо.Классы, которые ранее загружались нормально, больше не обнаруживаются загрузчиком классов OSGI, и что еще хуже: вы получаете ошибку во время выполнения, что означает, что вы не можете легко ее проверить, кроме как вручную протестировав каждый уголок вашего приложения.

Например, наше приложение успешно работало под OSGi, но мы получили отчеты от бета-тестеров о том, что они больше не могут экспортировать документы в PDF. Действительно, когда я изучил это, я обнаружил, что эта функция вызвала регистрацию исключения:

java.lang.NoClassDefFoundError: org/w3c/dom/Node

Итак, действительно ли OSGi создает больше проблем с путями к классам, чем решает?

и, что более важно: как я могу проверить, что мой путь к классу согласован со всеми необходимыми операторами Import-Package и т. Д. до я прочитал о них в отчетах об ошибках?

9
задан amarillion 19 September 2011 в 17:57
поделиться