我maven-jaxb2-plugin
用来根据 WSDL 生成 Java 类。生成的 Java 类在包下com.myapp.generated
,例如,有 Jaxb2 生成的类com.myapp.generated.SomeRequest
:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"someRequestType"
})
@XmlRootElement(name = "someRequest")
public class SomeRequest
{
// generated code
}
我正在扩展它,然后我将它放在不同的包中:
package com.myapp.extended.someRequest;
class SomeRequestExtended extends com.myapp.generated.SomeRequest {
// additional code
}
然后使用 Spring Boot (v2.2.9) / spring-oxm (v5.2.8) 我为 Jaxb2Marshaller 指定 Bean 来扫描该包:
@Bean
public Jaxb2Marshaller marshaller() {
Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
marshaller.setPackagesToScan("com.myapp.extended.*");
return marshaller;
}
不幸的是,在运行时,它没有找到它的问题:
class package com.myapp.extended.someRequest.SomeRequestExtended; nor any of its super class is known to this context.
at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.getBeanInfo(JAXBContextImpl.java:567) ~[na:1.8.0_201]
...
有谁知道是什么原因,以及如何让它扫描指定的包以找到 SomeRequestExtended 类?