【发布时间】:2021-09-27 02:57:43
【问题描述】:
我正在使用
<cxf-version>3.4.4</cxf-version>
<springframework.version>4.1.6.RELEASE</springframework.version>
<slf.version>1.7.9</slf.version>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-core</artifactId>
<version>2.3.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.3.0</version>
<scope>provided</scope>
</dependency>
然后在java中:
final Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
jaxbUnmarshaller.setSchema(schema);
但是An error has occurred in JavaDocs report generation: 时出现错误
[ERROR] /builds/provisioning/target/generated-sources/cxf/at/ActionType.java:26: error: bad use of '>'
[ERROR] * <complexType name="actionType">
似乎&lt; 正确转义为&lt;,但> 没有转义,而是>,这对我来说会导致错误。我找到了jaxbUnmarshaller.setProperty("jaxb.encoding", "Unicode");,但在这个例子中它没有任何改变。
【问题讨论】:
-
我认为这“只是”Java 8+ JavaDoc 更严格规则的问题。见this SO question for discussions of the issue and potential workarounds。
-
请注意,unicode 和编码
&lt;到&lt;是两个不同的东西。 Unicode大约是character <-> byte转换,另一个是character <-> html entity转换。 -
转义 XML 字符与字符编码没有任何关系,因此尝试设置字符编码(通过设置属性
jaxb.encoding)不会改变与此问题相关的任何内容。 -
谢谢大家,确实它适用于
<additionalparam>Xdoclint:none</additionalparam>,但它似乎更像是解决方法而不是正确的解决方案。我会尝试再玩一段时间。 @Edit 在@JoachimSauer 链接的网站上有一条关于jaxb的评论,我认为值得牢记——我尝试使用最新版本的cxf和jaxb,但仍然失败,所以它看起来更有弹性不要为我无法更改的代码生成它。