classLoader не может загрузить классы, реализующие класс из этого модуля - PullRequest
0 голосов
/ 05 ноября 2019

Я пытаюсь загрузить определенные классы в свой плагин maven, используя загрузчик классов ниже:

 public ClassLoader getClassLoader(MavenProject project) {
    try
    {
        List classpathElements = project.getCompileClasspathElements();
        URL urls[] = new URL[classpathElements.size()];
        for ( int i = 0; i < classpathElements.size(); ++i ) {
            urls[i] = new File( (String) classpathElements.get( i ) ).toURL();
        }
        return new URLClassLoader( urls, this.getClass().getClassLoader() );
    } catch ( Exception e ) {
        System.out.println( "Couldn't get the classloader." );
        return this.getClass().getClassLoader();
    }
}

этот загрузчик работает отлично в тестовом простом проекте. но когда я использую его в многомодульном проекте, он не загружает определенные классы. классы, которые реализуют класс в другом модуле (например, CardlessFacadeBean implements CardlessFacade, класс CardlessFacadeBean находится в этом модуле, а класс CardlessFacade находится в другом модуле). но другие классы, у которых нет этого условия, загружаются нормально. Есть ли способ решить эту проблему простым способом? Большое спасибо

1 Ответ

0 голосов
/ 09 ноября 2019

Я просто добавил другой путь к классу модуля в список элементов classpath, как показано ниже, и он распознал упомянутые классы.

classpathElements.add(moduleDirectory);

будет приветствоваться любое другое решение.

...