java .lang.ClassNotFoundException при загрузке класса с помощью URLClassLoader - PullRequest
0 голосов
/ 20 марта 2020

У меня есть файл JAR, который выглядит следующим образом:

MacBook@ ~/workspace-sync/mparnisa_dynamodb2/out/artifacts/dynamodb $ jar tf dynamodb.jar | head
META-INF/MANIFEST.MF
mparnisa-dynamodb-table.json
com/
com/mparnisa/
com/mparnisa/dynamodb/
com/mparnisa/dynamodb/table/
com/mparnisa/dynamodb/table/ResourceModel$ResourceModelBuilder.class
com/mparnisa/dynamodb/table/ResourceModel.class
com/amazonaws/AmazonServiceException.class
// and many more...

Из проекта IntelliJ я хочу создать экземпляр ResourceModel, который выглядит следующим образом:

package com.mparnisa.dynamodb.table;

@com.fasterxml.jackson.annotation.JsonAutoDetect(fieldVisibility = com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.ANY, getterVisibility = com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.NONE, setterVisibility = com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.NONE)
public class ResourceModel {

Итак, в моем коде я написал это:

File file  = new File("/Users/mparnisa/workspace-sync/mparnisa_dynamodb2/out/artifacts/dynamodb/dynamodb.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);

, но последняя строка выдает исключение:

java.lang.ClassNotFoundException: com.mparnisa.dynamodb.table.ResourceModel

1 Ответ

0 голосов
/ 20 марта 2020

NoClassDefFound также генерируется, когда класс найден, но инициализация stati c завершается неудачно. В этом случае должно быть более информативное исключение в журнале при запуске программы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...