Manifest.mf и импорт - PullRequest
       60

Manifest.mf и импорт

1 голос
/ 20 марта 2020

У меня есть следующая структура dynamodb.jar, где lib/ имеет группу .jar с. Все эти вложенные .jar необходимы com.mparnisa.dynamodb.table.

enter image description here

Из другого проекта 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, чтобы заглянуть в манифест. MF для class-path?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...