ACS AEM Commons - класс, не найденный acs-aem-commons-bundle - PullRequest
0 голосов
/ 17 сентября 2018

Я пытаюсь написать собственный класс в ACS Commons 'MCP Tool

Включая 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 not foundпо 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)

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

Ответы [ 2 ]

0 голосов
/ 19 сентября 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 Bundles (например, http://localhost:4502/system/console/bundles), чтобы установить пакеты вручную. Вы можете использовать любой из следующих способов.

Вариант 1:

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

Вариант 2:

  1. Установка Apache Service Mix - пакет загрузки Azure Storage 8.0.0 . В него встроено хранилище Azure 5.0.0. но имеет следующие зависимости.
  2. Guava 20 - Скачать комплект guava-20.0.jar (Зависимость для 1)
  3. Jackson Core - Комплект загрузки jackson-core-2.9.3.jar (Зависимость для 1)
0 голосов
/ 17 сентября 2018

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

  1. Зависимости времени компиляции
  2. Зависимости времени выполнения

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...