Java 如何从SpringDevTools重新启动周期中排除使用WSDL生成的类?

Java 如何从SpringDevTools重新启动周期中排除使用WSDL生成的类?,java,spring-boot,wsdl,spring-boot-devtools,Java,Spring Boot,Wsdl,Spring Boot Devtools,当我在启用Spring Devtools并从WSDL模式生成类的情况下启动Spring引导应用程序时,我得到: 由以下原因引起:java.lang.IllegalArgumentException:org.wsdl.WsdlServiceWs从方法引用在类加载器中不可见 我有一个基于SpringBoot的项目,其中一些类是使用org.apache.cxf:cxfcodegen插件从WSDL文件生成的。生成的类存储在target/Generated/wsdl/**目录中。生成类的包的名称与项目包名

当我在启用Spring Devtools并从WSDL模式生成类的情况下启动Spring引导应用程序时,我得到:

由以下原因引起:java.lang.IllegalArgumentException:org.wsdl.WsdlServiceWs从方法引用在类加载器中不可见

我有一个基于SpringBoot的项目,其中一些类是使用
org.apache.cxf:cxfcodegen插件
从WSDL文件生成的。生成的类存储在
target/Generated/wsdl/**
目录中。生成类的包的名称与项目包名称不同

我尝试了以下文件中的几种排除:

但我所有的尝试都失败了

restart.exclude.wsdl=target/generated/wsdl
restart.exclude.wsdl=org.wsdl.*
restart.exclude.wsdl=**WsdlServiceWs.class

我想启用Spring开发工具,将org.wsdl.*生成的类从重启周期中排除。

问题是,我试图使用
WsdlServiceWs
,它实际上是
WsdlServiceWsService
返回的接口。我将
WsdlServiceWs
接口作为配置中的bean返回:

。。。
@豆子
公共WsdlServiceWs wsdlService(){
返回新的WsdlServiceWsService().getService();
}
...
我没想到这会是问题所在。只需将bean更改为以下内容:

。。。
@豆子
公共WSDLServiceWSDLService(){
返回新的WsdlServiceWsService();
}
...
他完成了工作


编辑:

此解决方案仅将异常调用从Bean创建阶段移动到执行阶段。问题仍未解决。

您无法解决
  • 因为devtools只检查类的父路径,而不是每个文件夹,所以可以在changeableURL上添加断点。java:59
私有可更改URL(URL…URL){
DevToolsSettings设置=DevToolsSettings.get();
List reloadableUrls=新的ArrayList(url.length);
用于(URL:URL){
if((settings.isRestartInclude(url)| | isDirectoryUrl(url.toString())&&&!settings.isRestartExclude(url)){
可重新加载的url.add(url);
}
}
if(logger.isDebugEnabled()){
debug(“重新加载的匹配URL:+ReloadableURL”);
}
this.url=Collections.unmodifiableList(可重新加载的URL);
}
  • 您可以看到url是
    文件:/xxx/target/classes/
  • 所以,你不能用这种方法排除一个类
private ChangeableUrls(URL... urls) {
        DevToolsSettings settings = DevToolsSettings.get();
        List<URL> reloadableUrls = new ArrayList<>(urls.length);
        for (URL url : urls) {
            if ((settings.isRestartInclude(url) || isDirectoryUrl(url.toString())) && !settings.isRestartExclude(url)) {
                reloadableUrls.add(url);
            }
        }
        if (logger.isDebugEnabled()) {
            logger.debug("Matching URLs for reloading : " + reloadableUrls);
        }
        this.urls = Collections.unmodifiableList(reloadableUrls);
    }