我在/ target / class / .....中通过wsimport为WS服务生成存根时获得了异常,并使用devtools运行spring boot应用程序。
引起: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");
}
}
}
我试图在spring-devtools.properties中添加对jar文件的引用,以重启.include = / ..... jar
Spring Boot 2.0.0.RELEASE Java 9
答案 0 :(得分:4)
由于它们是生成的类,因此必须将它们从Spring Devtools“restart”类加载器中排除。
/src/main/resources/META-INF/spring-devtools.properties
文件添加restart.exclude.*
等属性以从重新启动的类加载器中排除类(例如,您可以使用restart.exclude.mygeneratedclasses=/*[generated]*.class
排除所有带有generated
字的类作为包或类名的一部分)
完成。现在您可以使用devtools并且对WS生成的类没有任何问题。
参考:
[1] https://github.com/spring-projects/spring-boot/issues/4529