0

我正在尝试在ACS Commons 的 MCP 工具中编写一个自定义类

在“pom.xml”中包含“azure storage”api,如下所示:

<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.adobe.acs.acs-aem-commons-bundle 找不到 com.microsoft.azure.storage.CloudStorageAccount

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)

感谢任何帮助!

4

2 回答 2

1

AEM 项目有两种类型的依赖项:

  1. 编译时依赖
  2. 运行时依赖项

在 Maven 中,您定义编译时依赖项。因此,向您添加依赖项pom.xml将使它们仅在 Maven 构建(编译时)期间可用。

作为开发人员,您的工作是确保这些依赖项在运行时也可用。基本上有三种方法可以实现:

  1. 手动安装这些依赖项
  2. 将这些依赖项添加到构建期间部署的内容包
  3. 在构建期间将依赖项嵌入到您的包中

这可能很明显,但您应该选择选项 2 或 3。这两种方法都有其优点和缺点。选项 2 的一个(相对)大问题是,并非所有依赖项都是 OSGi 包。因此,要使其工作,您需要将它们转换为 OSGi 包。这不是火箭科学,而是要记住的另一件事。嵌入你的依赖更容易,但我个人不太喜欢那个解决方案。

于 2018-09-17T20:37:21.497 回答
0

使用@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-Storage 5.0.0。但具有以下依赖项。
  2. Guava 20 - 下载包guava-20.0.jar(依赖 1)
  3. Jackson Core - 下载捆绑包jackson-core-2.9.3.jar(依赖 1)
于 2018-09-19T14:31:51.767 回答