使用hisrc-higherjaxb30-maven-plugin从XSD生成Kotlin类时出现MyLocalDateTimeAdapter类找不到异常
看起来你碰到的是生成代码时适配器类找不到的典型问题,我来帮你梳理几个可能的原因和解决办法:
先核对适配器的包名和绑定配置
首先确认你在XJC绑定文件里写的MyLocalDateTimeAdapter是不是全限定类名?比如如果你的适配器实际在com.chrispie.util包下,那绑定里必须写adapter="com.chrispie.util.MyLocalDateTimeAdapter",不能只写类名。要是包名写错了,生成的ObjectFactory自然找不到对应的类。确保适配器类能被maven编译流程访问到
如果你是自己写的MyLocalDateTimeAdapter,得确认它所在的源码目录(比如src/main/kotlin或者src/main/java)是maven默认识别的编译目录。另外,要是这个适配器在另一个模块里,那得把那个模块作为依赖加到当前项目里,而且要保证那个模块已经提前构建完成,不然生成代码的时候肯定找不到。检查插件配置的细节
看看hisrc-higherjaxb30-maven-plugin的配置,有没有把适配器所在的源码路径或者类路径正确引入?还有,绑定文件有没有被插件正确加载?比如插件里的bindingFiles参数是不是指向了正确的XJC文件路径,别让绑定规则根本没生效。调整插件的执行顺序试试
有时候maven插件的执行顺序会坑人——如果生成代码的插件比编译MyLocalDateTimeAdapter的插件先跑,那生成的代码自然找不到还没编译的适配器类。你可以把生成代码的插件执行阶段设为generate-sources,然后确保kotlin-maven-plugin(或者java编译插件)在这个阶段之后执行,这样生成代码的时候,适配器已经编译好了。
备注:内容来源于stack exchange,提问作者cp5

