Добавлена ​​​​зависимость в Gradle, Liferay говорит, что неразрешенное требование: Import-Package

Я написал модуль Liferay и успешно его развернул.

Затем я добавил эту строку в раздел build.gradle dependencies:

compileOnly group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.5.3'

После запуска ./gradlew eclipse я могу без проблем использовать библиотеку в Eclipse. Но развертывание не выполняется:

12:29:35,454 WARN  [fileinstall-/home/nico/liferay/osgi/modules][org_apache_felix_fileinstall:103] Error while starting bundle: file:/home/nico/liferay-dxp-digital-enterprise-7.0-sp3/osgi/modules/de.nico.mymodule-1.0.0.jar 
org.osgi.framework.BundleException: Could not resolve module: de.nico.mymodule [1085]_  Unresolved requirement: Import-Package: org.apache.http; version="4.5.3"_ [Sanitized]
    at org.eclipse.osgi.container.Module.start(Module.java:429)
    at org.eclipse.osgi.internal.framework.EquinoxBundle.start(EquinoxBundle.java:402)
    at org.apache.felix.fileinstall.internal.DirectoryWatcher.startBundle(DirectoryWatcher.java:1253)
    at org.apache.felix.fileinstall.internal.DirectoryWatcher.startBundles(DirectoryWatcher.java:1225)
    at org.apache.felix.fileinstall.internal.DirectoryWatcher.doProcess(DirectoryWatcher.java:512)
    at org.apache.felix.fileinstall.internal.DirectoryWatcher.process(DirectoryWatcher.java:361)
    at org.apache.felix.fileinstall.internal.DirectoryWatcher.run(DirectoryWatcher.java:312)

Я понятия не имею, почему он ищет org.apache.http, а не org.apache.httpcomponents.

Вот мой bnd.bnd:

Bundle-SymbolicName: de.nico.mymodule
Bundle-Version: 1.0.0
Liferay-Require-SchemaVersion: 1.0.0

Как исследовать эту проблему?
Я не хочу загружать/добавлять JAR вручную.


person Nicolas Raoul    schedule 14.07.2017    source источник


Ответы (2)


дальнейшие исследования начнутся с сообщения об исключении. В нем говорится, что в RUNTIME отсутствует следующее требование:

Пакет импорта: org.apache.http; версия=4.5.3

Я предполагаю, что это одно из следующего:

  • вы не развернули библиотеки httpcomponents (или версию, которая вам нужна .. см. Semantic Versioning) в Liferay (при компиляции работает, а развертывание не выполняется)
  • httpcomponents не могут быть упакованы как пакеты OSGi. В этом случае вам придется решить, как сделать код доступным. Хорошими отправными точками для получения дополнительной информации являются официальная документация (спасибо, Андреа, продвигающая это из комментариев) и Статья в блоге Дэвида Небингера

Вы сами решаете, как добавить эти зависимости в среду выполнения Liferay. Если зависимости представляют собой пакеты OSGi, вы можете загрузить и развернуть их напрямую. Если это не пакеты OSGi, следуйте одному из методов, описанных в связанных статьях.

person Olaf Kock    schedule 14.07.2017
comment
Также есть несколько официальных документов по этому поводу: " rel="nofollow noreferrer">dev.liferay.com/develop/tutorials/-/knowledge_base/7-0/ - person Andrea Di Giorgi; 18.07.2017
comment
@AndreaDiGiorgi: я попробовал то, что описано на этой странице, и получил Could not find method compileInclude() for arguments [{group=org.apache.httpcomponents, name=httpclient, version=4.5.3}] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler - person Nicolas Raoul; 18.07.2017
comment
@Olaf Действительно, я не развертывал httpcomponents в Liferay, я думал, что Gradle включит нужные вещи в мой модуль. Я нашел https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient-osgi , вы предлагаете мне вручную загрузить его и его многочисленные зависимости и поместить их все в папку deploy/ Liferay? - person Nicolas Raoul; 18.07.2017
comment
Если вы работаете с Liferay Workspace, вам потребуется версия не ниже 1.2.3. Вместо этого, если вы используете com.liferay.gradle.plugins напрямую, вам нужна как минимум версия 3.1.0. На всякий случай попробуйте обновить плагины Gradle до последней версии. - person Andrea Di Giorgi; 18.07.2017
comment
@AndreaDiGiorgi: я получаю эту ошибку, когда com.liferay.gradle.plugins установлено на 3.2.29. - person Nicolas Raoul; 19.07.2017

В вашем bnd.bnd

добавьте этот код..

Import-Package:\
    !org.apache.*,\
    \
    *
person Falcon Ryu    schedule 11.09.2018