【问题标题】:Generated Classes by JAXB are not recognizableJAXB 生成的类无法识别
【发布时间】:2016-08-06 07:15:43
【问题描述】:

我正在尝试 JAXB 用于 Maven 项目中的 xml 映射。我将 JAXB jar 放在一个单独的项目中,并将其作为依赖项添加到我的主项目中。我正在使用 Eclipse。

现在 JAXB 的功能似乎很好,并且从一些 XSD 模式中,在 target/generated-sources/xjc 文件夹中生成了几个 Java 类。问题是 Eclipse 无法在主项目的单元测试中解析这些类。我什至手动导入了这些包名,但类名仍然无法解析。我有什么遗漏吗?

【问题讨论】:

  • 目录target/generated-sources/xjc是你项目中的java源码文件夹吗?
  • @f1sh - jaxb 有自己的项目结构,target/generated-sources/xjc 是 JAXB 放置所有这些类的默认位置。我是否必须明确将其标记为某个源文件夹?如何?此外,我注意到我的 jaxb-jar 项目中的 jar 不在本地 .m2\repository 中,即使我在其上运行 maven 安装也是如此。会不会是这个问题?
  • 既然你使用了maven为什么不使用JAXB-2 Maven plugin而不是在单独的项目中使用jaxb jar?
  • @vl4d1m1r4 - 我正在使用插件。 “jaxb-jar”是我的项目的名称,其中包含这些生成的类,我打算使用 Maven install 从该项目创建一个 jar 以在我的主项目中使用。
  • 在这种情况下,我个人会使用多模块 Maven 项目,并将“jaxb-jar”项目作为依赖项添加到主项目中。确保“jaxb-jar”项目的打包类型为jar,并将生成文件的文件夹作为源文件夹添加到构建路径(右键单击->构建路径->用作源文件夹)。您还可以使用 build-helper-maven-plugin 自动使用 maven 构建添加源文件夹。希望这会有所帮助。

标签: java xml eclipse maven jaxb


【解决方案1】:

您可以通过右键单击 -> 构建路径 -> 将生成的源文件添加到构建路径中 -> 使用生成资源的文件夹上的源文件夹。

如 cmets 中所述,您使用的插件应自动为您执行此操作。如果没有,您可以使用 build-helper-maven-plugin (related question) 和以下配置:

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>build-helper-maven-plugin</artifactId>
  <version>1.7</version>
  <executions>
    <execution>
      <id>add-source</id>
      <phase>generate-sources</phase>
      <goals>
        <goal>add-source</goal>
      </goals>
      <configuration>
        <sources>
          <source>target/generated-sources/xjc</source>
        </sources>
      </configuration>
    </execution>
  </executions>
</plugin>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-02
    • 1970-01-01
    相关资源
    最近更新 更多