java.lang.IllegalArgumentException, на который ссылается метод, не отображается в загрузчике классов

Я получил исключение, когда сгенерировал заглушку для службы WS с помощью wsimport в /target/class/..... и запустил приложение весенней загрузки с помощью devtools.

Вызывается: java.lang.IllegalArgumentException: com.... Служба, на которую ссылается метод, не видна из загрузчика классов.

Я обнаружил, что проблема с загрузчиком классов Spring devtools, RestartClassLoader, из-за двух разных ссылок на класс (RestartClassLoader и AppClassLoader)

private static void ensureVisible(ClassLoader ld, Class<?> c) {
    Class<?> type = null;
    try {
        type = Class.forName(c.getName(), false, ld);
    } catch (ClassNotFoundException e) {
        if (type != c) {
            throw new IllegalArgumentException(c.getName() +
                    " referenced from a method is not visible from class loader");
        }
    }
}

Я пытался добавить ссылку на файл jar в spring-devtools.properties, чтобы перезапустить.include = /..... jar

Spring Boot 2.0.0. ВЫПУСК Java 9

2 ответа

Решение

Поскольку они являются сгенерированными классами, вы должны исключить их из загрузчика классов Spring Devtools.

  1. Создать /src/main/resources/META-INF/spring-devtools.properties файл
  2. Добавить свойства как restart.exclude.* исключить классы из перезапуска загрузчика классов (например, вы можете использовать restart.exclude.mygeneratedclasses=/*[generated]*.class исключить все классы с generated слово как часть названия пакета или класса)

  3. Готово. Теперь вы можете использовать devtools и не иметь проблем с классами, сгенерированными WS.

Ссылка:

[1] https://github.com/spring-projects/spring-boot/issues/4529

[2] https://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-devtools.html

Или просто удалите зависимость Spring Dev Tools, если это не повлияет на ваше приложение:

      <dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-devtools</artifactId>
  <scope>runtime</scope>
</dependency>
Другие вопросы по тегам