gpt4 book ai didi

从方法引用的 java.lang.IllegalArgumentException 在类加载器中不可见

转载 作者:搜寻专家 更新时间:2023-11-01 02:00:13 25 4
gpt4 key购买 nike

当 wsimport 在/target/class/..... 中为 WS 服务生成 stub 并使用 devtools 运行 spring boot 应用程序时,我获得了一个异常。

Caused by: java.lang.IllegalArgumentException: com....Service referenced from a method is not visible from class loader

我发现 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 文件的引用添加到 restart.include=/.....jar

Spring Boot 2.0.0.RELEASE Java 9

最佳答案

由于它们是生成的类,您必须将它们从 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#using-boot-devtools-customizing-classload

关于从方法引用的 java.lang.IllegalArgumentException 在类加载器中不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50465170/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com