У меня есть собственный Doclet, использующий Java 8, который создает файлы RAML на основе классов, найденных в проекте. Плагин очень хорошо находит исходные файлы проекта, а добавление docletArtificacts через Maven прекрасно обрабатывает большинство jar-файлов;однако мне нужно создать экземпляры классов, используя «Class.forName (class)» внутри доклета, и я получаю ClassNotFoundExceptions для любых файлов .class, которые находятся в толстом фляге Spring Boot. Как я могу заставить загрузчик классов распознавать классы в моем толстом фляге Spring Boot?
Я пытался использовать класс LaunchedURLClassLoader из Spring boot, но, похоже, это не помогает, если я что-то не упустил,что вполне возможно.
Очень простой код:
try {
return Class.forName("my.fully.qualified.classname");
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
}
Файл класса на самом деле находится внутри моего весеннего загрузочного файла JAR: BOOT-INF / classes / my / полностью / qualified/classname.class
Я пробовал все варианты, которые я могу представить для передачи в разные загрузчики классов в качестве 3-го параметра и т. д., но, похоже, ничего не работает.
Вот информация о плагине maven,на случай, если кто-то найдет это полезным:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<executions>
<execution>
<phase>install</phase>
<goals>
<goal>javadoc</goal>
</goals>
<configuration>
<doclet>my.doclet.RamlDoclet</doclet>
<docletArtifacts>
<docletArtifact>
<groupId>my.doclet</groupId>
<artifactId>raml-doclet-artifact</artifactId>
<version>${myVersion}</version>
</docletArtifact>
<docletArtifact>
<groupId>${project.groupId}</groupId>
<artifactId>${project.artifactId}</artifactId>
<version>${project.version}</version>
</docletArtifact>
</docletArtifacts>
<useStandardDocletOptions>false</useStandardDocletOptions>
<failOnError>false</failOnError>
</configuration>
</execution>
</executions>
</plugin>
Любые подсказки, которые помогут мне двигаться вперед, будут полезны.