ACS AEM公用-acs-aem-commons-bundle未找到类

时间:2018-09-17 20:08:36

标签: azure-storage aem sling azure-java-sdk

我正在尝试在ACS Commons' MCP Tool

中编写一个自定义类

在“ 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)

感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

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

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

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

作为开发人员,您要确保在运行时期间这些依赖项也可用。基本上可以通过三种方式实现这一目标:

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

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

答案 1 :(得分: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捆绑软件(如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. 番石榴20-下载捆绑包guava-20.0.jar(依赖性为1)
  3. Jackson Core-下载捆绑包jackson-core-2.9.3.jar(依赖性为1)