首页 > 解决方案 > Manifest.mf 和导入

问题描述

我有以下dynamodb.jar结构,其中lib/有一堆.jars。所有这些嵌套.jar的 s 都是com.mparnisa.dynamodb.table.

在此处输入图像描述

从另一个 IntelliJ 项目中,我尝试在其中实例化一个类dynamodb.jar

try {
    File file  = new File("<path>/dynamo.jar");

    URL url = file.toURI().toURL();
    URL[] urls = new URL[]{url};

    ClassLoader urlClassLoader = new URLClassLoader(urls);

    String resourceModelClassName = "com.mparnisa.dynamodb.table.ResourceModel";

    Class<?> resourceModelClass = urlClassLoader.loadClass(resourceModelClassName);
    Object resourceModel = resourceModelClass.newInstance(); // this works

    String resourceHandlerClassName = "com.mparnisa.dynamodb.table.CreateHandler";

    Class<?> resHandlerClazz  = urlClassLoader.loadClass(resourceHandlerClassName);
    try {
        Object resourceHandlerInstance = resHandlerClazz.newInstance();

    } catch (NoClassDefFoundError e) {
        System.out.println(e.getMessage());
    }
} catch (Exception e){
    System.out.println(e.getMessage());
}

代码中断

java.lang.NoClassDefFoundError: com/amazonaws/AmazonServiceException

此类位于嵌套 JAR 之一中,importcom.mparnisa.dynamodb.table.CreateHandler.

我的问题:

  1. 我是否需要更改 MANIFEST.MF 中的任何内容import才能正确解决?
  2. 是否URLClassLoader足够聪明地查看 MANIFEST.MF 的class-path?

标签: javanoclassdeffounderrorurlclassloader

解决方案


推荐阅读