Библиотеки зависимостей проекта Jdev - PullRequest
0 голосов
/ 11 сентября 2009

JDeveloper 10.1.3.x

Недавно я узнал, что неэкспортированная библиотека не будет включена в путь к классам при развертывании во встроенный контейнер OC4J, поскольку в ней нет записи библиотеки в файле application-oc4j-app.xml.

Я также продемонстрировал себе, что библиотеки, которые не экспортируются в проекты, от которых зависит мой проект , включены в файл application-oc4j-app.xml.

Неэкспортированные библиотеки в моем проекте не включаются . Необъявленные библиотеки в моих зависимостях проекта do включены.

Это ошибка или функция, и могу ли я изменить это поведение так, чтобы неэкспортированные библиотеки в зависимости моего проекта также не включались?

Спасибо, Стив

Ответы [ 2 ]

0 голосов
/ 16 сентября 2009

На сегодняшний день я не нашел способа указать разные пути к классам для сборки и времени выполнения, но с помощью коллеги решение моей конкретной ситуации было найдено. Даже если коннектор не является проектом JDev, зависимый проект может ссылаться на файл jar log4j, который упакован и загружен вместе с ним. Это эффективно имитирует поведение во время выполнения как для автономного, так и для встроенного развертывания контейнера oc4j, в котором веб-приложение и связанный код приложения ссылаются на экземпляр log4j, загруженный загрузчиком классов стороннего JCA-коннектора. Я не думал, что это сработает, если предположить, что библиотека log4j, загруженная двумя разными загрузчиками классов, по-прежнему будет представлять собой два разных экземпляра библиотеки по отношению к статическим инициализаторам log4j. (Это то, что я предполагаю, побуждает log4j генерировать исключение, если оно находит другой экземпляр себя в иерархии загрузчика классов.) По-видимому, это не так, по крайней мере для встроенного сценария. Мне не нужно проверять это для автономного контейнера, так как сборка Maven знает, что не следует включать копию jar библиотеки log4j в файл EAR приложения через «предоставленную» спецификацию области действия в файле сборки. Встроенный контейнер OC4J теперь загружает соединитель JCA, связанный экземпляр библиотеки log4, развертывает приложение и позволяет обоим использовать классы log4j из одного и того же файла библиотеки log4j. Не совсем уверен в том, как взаимодействуют загрузчики классов коннектора и веб-приложений, но теперь это работает.

0 голосов
/ 13 сентября 2009

Неэкспортированные библиотеки не должны включаться в файл application -oc4j-app.xml. Похоже, что в JDeveloper есть ошибка или какое-то необъяснимое поведение.

ИМХО, учитывая выбор между Eclipse или <вставить другую IDE здесь> и JDeveloper, разумно выбрать Eclipse.

Одним из необъяснимых поведений, о которых я говорил ранее, была проблема с JDeveloper, компилирующая все проекты в каталоге приложения, даже если они не были частью текущего файла рабочей области ( jws файл). Другими словами, JDeveloper будет рассматривать файл JPR для включения в рабочую область, даже если в файле JWS указано иное (то есть он не отображается визуально в рабочей области JDeveloper).

...