Это относится к JBoss 5.1.0:
Я привык бросать JAR-файлы прямо под моим EAR и подбирать классы. Когда ClassLoader выполняет диагностический дамп, он перечисляет все JAR-файлы под ухом, а затем все пакеты Java, найденные в указанных JAR-файлах.
У меня есть этот архив jsqlparser-bin.jar
, который по ошибке не указан в качестве JAR, несмотря на то, что находится под EAR. Тем не менее, его пакеты найдены , но все они начинаются с имени JAR! Таким образом, вместо перечисления пакетов, таких как net.sf.jsqlparser.schema
, он перечисляет jsqlparser-bin.jar.net.sf.jsqlparser.schema
.
Я также заметил в дампе другие имена пакетов с добавлением архива , такие как jaxb-impl.jar.com.sun.xml.bind.api
. Это заставило меня поверить, что если один и тот же пакет был включен в несколько JAR-файлов, то JBoss произвёл творческое переименование, отсюда и предположение. Однако, если я полностью удалил jsqlparser-bin.jar
из EAR, ни одна версия пакетов не была сброшена. Так что теперь я невежественен. Я также просканировал другие архивы в EAR на наличие jsqlparser
, но вышел пустым. jsqlparser-bin.jar
сам по себе кошерный, так как я могу скомпилировать его (и не скомпилировать без него).
Так что дает? Как сделать классы в этом JAR видимыми? Почему у него нет своего DelegatingHandler
в иерархии загрузчиков классов?