Manifest.mf и импорт

У меня есть следующая структура dynamodb.jar, где lib/ имеет кучу .jar. Все эти вложенные .jar нужны 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-файлов и имеет importредактор com.mparnisa.dynamodb.table.CreateHandler.

Мои вопросы:

  1. Нужно ли мне что-то менять в MANIFEST.MF, чтобы import разрешалось правильно?
  2. Достаточно ли умен URLClassLoader, чтобы заглянуть в MANIFEST.MF для class-path?

person Maria Ines Parnisari    schedule 20.03.2020    source источник