У меня есть следующая структура 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
.
Мои вопросы:
- Нужно ли что-нибудь изменить в MANIFEST.MF, чтобы
import
было правильно решено? - Достаточно ли умна
URLClassLoader
, чтобы заглянуть в манифест. MF для class-path
?