Почему JBoss добавляет имя JAR к моим именам пакетов Java? - PullRequest
0 голосов
/ 05 октября 2011

Это относится к 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 в иерархии загрузчиков классов?

1 Ответ

0 голосов
/ 05 октября 2011

Похоже, мне нужно было добавить <module> блок в мой META-INF/application.xml для правильного разрешения.

...