0

我目前正在尝试构建一个已从 Ant 迁移到 Maven 的遗留项目。这个项目使用xmlbeans-maven-plugin.xsd源文件构建 java 类。get...List()在调用方法之前一切正常。所有列表获取者似乎都不见了。我能找到的所有信息都指向正在使用的不支持列表的 Java 版本。适用于大多数人的解决方案是javaSource将插件配置中的标签更改为1.5. 这并没有解决我的问题。

我目前的相关部分pom.xml如下所示:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>xmlbeans-maven-plugin</artifactId>
    <version>2.3.3</version>
    <executions>
        <execution>
            <phase>generate-sources</phase>
            <goals>
                <goal>xmlbeans</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <javaSource>1.8</javaSource>
        <schemaDirectory>src/main/xsd</schemaDirectory>
    </configuration>
</plugin>

从 2011 年开始,另一个 stackoverflow 线程(使用 xmlbeans 插件时未从 .xsd 文件生成的 Maven2:List 返回类型方法)建议将 Java 版本设置为 1.5。这给了我另一个错误:

Failed to execute goal org.codehaus.mojo:xmlbeans-maven-plugin:2.3.3:xmlbeans (default) on project ...: XmlBeans compile failed:
 xml ErrorLoading schema file ...
 xml ErrorLoading schema file ...
 xml ErrorLoading schema file ...
 xml ErrorLoading schema file ...
 xml ErrorLoading schema file ...

我在这里找到的这个问题的解决方案告诉我这是 Java 11 的问题,我应该将 Java 版本设置为 1.8。

这是其中一个.xsd文件的片段:

<xs:element name="DbcFile" minOccurs="0" maxOccurs="unbounded">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="name" type="xs:string" />
      <xs:element name="path" type="xs:string" />
    </xs:sequence>
  </xs:complexType>
</xs:element>

这应该生成一个名为getDbcFileList(). 但是,正如您从此错误消息中看到的那样,它不会这样做:

... cannot find symbol
  symbol:   method getDbcFileList()

它确实生成getDbcFileArray(). 我已经尝试了很多更改 Java 版本的组合,每次都删除构建文件夹以获得干净的构建,你可以命名它。老实说,我没有想法。

我正在使用 Maven 3.6.3 和 OpenJDK 13.0.2+8_2。我正在运行来自 IntelliJ 2020.1 的 maven 命令。我唯一没有尝试过的是降级我的 JDK,但我觉得这不会有什么不同。

4

1 回答 1

0

我解决了。出于某种原因,解决方案是降级到 JDK 1.8。

于 2020-04-21T07:48:07.867 回答