Liferay - Использование сторонней библиотеки не работает - PullRequest
0 голосов
/ 15 мая 2018

Я новичок в Liferay.Для моего первого проекта мне нужно создать модуль, который использует стороннюю библиотеку.Эта библиотека была разработана университетом и используется не очень часто, поэтому она не предназначена для репозиториев Maven или чего-либо еще.Поэтому я скопировал его в свой проект Liferay и пытаюсь выяснить, как решить проблемы с зависимостями.Я читаю бесчисленные записи и блоги, но я все еще немного сбит с толку.

Я надеюсь, что кто-то может указать мне правильное направление, чтобы решить мою проблему.

build.Gradle модуля

dependencies {
    compileOnly group: "com.liferay.portal", name: "com.liferay.portal.kernel", version: "2.0.0"
    compileOnly group: "com.liferay.portal", name: "com.liferay.util.taglib", version: "2.0.0"
    compileOnly group: "javax.portlet", name: "portlet-api", version: "2.0"
    compileOnly group: "javax.servlet", name: "javax.servlet-api", version: "3.0.1"
    compileOnly group: "jstl", name: "jstl", version: "1.2"
    compileOnly group: "org.osgi", name: "osgi.cmpn", version: "6.0.0"
    compile files('lib/openBIS-API-V3-16.05.7-r1522065804.jar')
} 

settings.gradle

buildscript {
    dependencies {
        classpath group: "com.liferay", name: "com.liferay.gradle.plugins.workspace", version: "1.5.0"
        classpath group: "net.saliman", name: "gradle-properties-plugin", version: "1.4.6"
    }

    repositories {
        maven {
            url "https://cdn.lfrs.sl/repository.liferay.com/nexus/content/groups/public"
        }
    }
}

apply plugin: "net.saliman.properties"

apply plugin: "com.liferay.workspace"

bnd.bnd

Bundle-Name: my-dbdisplayer-project
Bundle-SymbolicName: de.mpi.prototype.dbdisplayer
Bundle-Version: 1.0.0
Export-Package: \
    de.mpi.prototype.dbdisplayer.constants,\
Conditional-Package: \
    ch.*
Bundle-Classpath:\
    .,\
    lib/openBIS-API-V3-16.05.7-r1522065804.jar
-includeresource:\
    lib/openBIS-API-V3-16.05.7-r1522065804.jar

Вывод на терминал при развертывании модуля с развертывание блейда

BUILD SUCCESSFUL

Total time: 1.768 secs
stop 505
update 505 file:/home/liferay/MPI/liferay-prototype/modules/my-dbdisplayer-project/build/libs/de.mpi.prototype.dbdisplayer-1.0.0.jar
start 505
org.osgi.framework.BundleException: Could not resolve module: de.mpi.prototype.dbdisplayer [505]
  Unresolved requirement: Import-Package: ch.ethz.sis.openbis.generic.asapi.v3
Updated bundle 505

Ответы [ 3 ]

0 голосов
/ 22 мая 2018

Я оставлю вам здесь пример баночки с убером, с несколькими библиотеками внутри.

In bnd.bnd

Bundle-RequiredExecutionEnvironment: JavaSE-1.8

Import-Package: *

Export-Package: javax.mail.*;version=1.5.6,\
                javax.activation; version=1.1.1,\
                com.sun.activation.*; version=1.1.1,\
                com.sun.mail.*;version=1.5.6


-snapshot: ${tstamp}
-dsannotations: *
-check: all

-includeresource: lib/activation.jar=activation-1.1.1.jar,\
                 lib/javax.mail.jar=javax.mail-1.5.6.jar,\
                 lib/javax.mail-api.jar=javax.mail-api-1.5.6.jar

Bundle-ClassPath: ., lib/activation.jar, lib/javax.mail-api.jar, lib/javax.mail.jar
0 голосов
/ 13 декабря 2018

Вместо того, чтобы использовать -includeresource и настраивать Bundle-ClassPath самостоятельно, рассмотрите возможность использования конфигурации compileInclude в вашем gradle.properties.

Как отмечали многие, вам, вероятно, также необходимо предоставить библиотеку, содержащую пакет ch.ethz.sis.openbis.generic.asapi.v3.Вы, вероятно, не хотите / не можете предоставить его как модуль и хотите включить его в свой пакет, так же, как вы включаете openBIS-API.jar.Это будет что-то вроде этого:

compileInclude files('lib/openBIS-API-V3-16.05.7-r1522065804.jar')
compileInclude files('lib/openBIS-asapi.jar')

или даже:

compileInclude fileTree(dir: 'lib', include: '*.jar')

Конечно, вам нужен еще один openBIS-asapi.jar, который содержит отсутствующий пакет.Если этот пакет нигде не найден, возможно, вы можете поместить его в bnd.bnd:

Import-Package: *;resolution:=optional

РЕДАКТИРОВАТЬ

Я только что нашел в http://svnsis.ethz.ch/repos/cisd/openbis_api/trunk, что пакет уже находится в openbis_api, но это имеет много зависимостей.См .:

compileInclude должны скопировать и настроить все зависимости для вас, но я предвижу больше проблем с загрузкой классов...

0 голосов
/ 16 мая 2018

Ваш пакет импортирует пакет ch.ethz.sis.openbis.generic.asapi.v3. Это потому, что этот пакет является зависимостью кода внутри пакета.

Вам необходимо установить пакет, который экспортирует пакет ch.ethz.sis.openbis.generic.asapi.v3.

...