ACS AEM Commons — класс не найден с помощью acs-aem-commons-bundle

Я пытаюсь написать собственный класс в Инструмент MCP от ACS Commons

Включите API-интерфейс "azure storage" в "pom.xml", как показано ниже:

<dependency>
  <groupId>com.microsoft.azure</groupId>
  <artifactId>azure-storage</artifactId>
  <version>8.0.0</version>
</dependency>

Сборка работает нормально без каких-либо ошибок компиляции, но при запуске программы я вижу в журналах ошибок следующее:

Пример использования:

import com.microsoft.azure.storage.CloudStorageAccount;
..
public class AzureAssetIngestor extends AssetIngestor {
  private CloudStorageAccount storageAccount;
  ..
  storageAccount = CloudStorageAccount.parse(storageConnectionString);

Ошибка в журналах при выполнении программы

Вызвано: java.lang.ClassNotFoundException: com.microsoft.azure.storage.CloudStorageAccount не найден com.adobe.acs.acs-aem-commons-bundle

Caused by: java.lang.ClassNotFoundException: com.microsoft.azure.storage.CloudStorageAccount not found by com.adobe.acs.acs-aem-commons-bundle [521]
at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1574)
at org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:79)
at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:2018)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

Ценим любую помощь!


person Suren Konathala    schedule 17.09.2018    source источник


Ответы (2)


Существует два типа зависимостей для проектов AEM:

  1. Компиляция временных зависимостей
  2. Зависимости времени выполнения

В Maven вы определяете зависимости времени компиляции. Таким образом, добавление зависимостей к вашему pom.xml сделает их доступными только во время сборки (во время компиляции) Maven.

Ваша задача как разработчика — обеспечить доступность этих зависимостей во время выполнения. Есть в основном три способа добиться этого:

  1. Установите эти зависимости вручную
  2. Добавьте эти зависимости в пакет содержимого, развернутый во время сборки.
  3. Внедрите зависимость в свой пакет во время сборки

Вероятно, это очевидно, но вам следует выбрать вариант 2 или 3. Оба подхода имеют свои преимущества и недостатки. (Относительно) большая проблема с вариантом 2 заключается в том, что не все ваши зависимости являются пакетами OSGi. Поэтому, чтобы это работало, вам нужно будет преобразовать их в пакеты OSGi. Это не ракетостроение, а еще одна вещь, о которой следует помнить. Встроить вашу зависимость проще, но лично мне это решение не очень нравится.

person Jens    schedule 17.09.2018
comment
Я внедряю зависимость как ‹artifactId›maven-bundle-plugin‹/artifactId›‹Import-Package›com.microsoft.azure.*; разрешение: = необязательно,‹/Import-Package›, но все еще проблемы. - person Suren Konathala; 18.09.2018
comment
Все разрешение:=необязательный здесь означает, что отсутствие этого пакета в другом комплекте не мешает активировать этот пакет. Это прекрасное решение, если функциональность необязательна. Это, однако, не устраняет необходимость наличия этого пакета (т. е. предоставленного другим пакетом), если используется потребляющий класс. - person Justin Edelson; 18.09.2018

С входами @Jens возможность установки пакетов вручную помогла / работала.

Вот решение:

pom.xml

<artifactId>maven-bundle-plugin</artifactId>
  <Import-Package>
    com.microsoft.azure.*;resolution:=optional,
  ...
  </Import-Package>
...
<dependency>
  <groupId>com.microsoft.azure</groupId>
  <artifactId>azure-storage</artifactId>
  <version>8.0.0</version>
  <scope>provided</scope>
</dependency>

Затем перейдите к пакетам AEM (например, http://localhost:4502/system/console/bundles). ) для установки пакетов вручную. Вы можете использовать любой из приведенных ниже.

Вариант 1:

  1. Установите Oak Blob Cloud Azure. Пакет поставляется вместе с пакетом Azure-Storage 5.0.0.

Вариант 2:

  1. Установка Apache Service Mix — загрузка пакета Хранилище Azure 8.0.0. В него встроено Azure-Storage 5.0.0. но имеет следующие зависимости.
  2. Guava 20 — пакет загрузки guava-20.0.jar (зависимость для 1)
  3. Jackson Core — пакет загрузки jackson-core-2.9.3.jar (зависимость для 1)
person Suren Konathala    schedule 19.09.2018