Когда Thread.currentThread (). GetContextClassLoader () возвращает значение null, что происходит? - PullRequest
4 голосов
/ 20 сентября 2010

Начните с файла JAR, который содержит текстовый файл SPI JAX-WS в / META-INF, а затем с классом, на который он указывает.Поместите это в путь к классам.Установите для contextClassLoader для текущего потока значение null.

Вызовите класс Service из API JAX-WS в JDK 1.6 и начните проходить через него.При отсутствии загрузчика класса контекста этот код будет вызывать статические методы Class для поиска объектов.

Он успешно найдет файл SPI.Но он не найдет .class, который он назвал.

Если вы действительно хотите попробовать это сами, возьмите Apache CXF 2.2.10, поместите его в classpath и обнулите загрузчик класса контекста.1009 *

Это не было упражнением в бессмысленном мазохизме: оказывается, что когда Open Office вызывает расширение Java ('UNO'), оно оставляет загрузчик класса контекста null.Чтобы понять это, потребовалась некоторая значительная проктология археология.Что заставило меня задуматься, есть ли ошибка JDK, которая объясняет противоречивые результаты, или какое-то определенное поведение, которое я не понимаю?

1 Ответ

1 голос
/ 20 сентября 2010

Для такого рода вещей были подняты различные ошибки; например сканировать результаты этого запроса . Общий ответ Sun состоит в том, что это функции, а не ошибки, и они не будут исправлены; например http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4155645.

Суть в том, что getContextClassLoader может вернуть null.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...