web-dev-qa-db-ja.com

MavenプロジェクトでJAXB RIに使用するアーティファクトはどれですか?

歴史的に、私は常にMavenプロジェクトで次のJAXB RIアーティファクトを使用していました。

  • com.Sun.xml.bind:jaxb-impl-ランタイム
  • com.Sun.xml.bind:jaxb-xjc-スキーマコンパイラ
  • com.Sun.xml.bind:jaxb-jxc-スキーマジェネレーター

およそバージョン2.2.10*これらのアーティファクトは現在 「古い」と記述

com.Sun.xml.bind:jaxb-impl

古いJAXBランタイムモジュール。

そのため、これらのアーティファクトは現在廃止されているようです。

質問は:

代わりにどのアーティファクトを使用する必要がありますか?

38
lexicore

Oracleで明確にした後、次のアーティファクトを使用する必要があります。

ランタイム

XMLをJavaオブジェクトまたはmarshal JavaオブジェクトをXMLとしてマーシャリング解除する場合:

<dependency>
    <groupId>org.glassfish.jaxb</groupId>
    <artifactId>jaxb-runtime</artifactId>
    <version>...</version>
</dependency>

スキーマコンパイラ(XJC)

XMLスキーマがあり、そこからJavaコードを生成する場合:

<dependency>
    <groupId>org.glassfish.jaxb</groupId>
    <artifactId>jaxb-xjc</artifactId>
    <version>...</version>
</dependency>

スキーマジェネレーター(JXC/schemagen

Java JAXBアノテーションを持つクラスがあり、それらに基づいてXMLスキーマを生成する場合:

<dependency>
    <groupId>org.glassfish.jaxb</groupId>
    <artifactId>jaxb-jxc</artifactId>
    <version>...</version>
</dependency>

後者の2つのアーティファクト(org.glassfish.jaxb:jaxb-xjcおよびorg.glassfish.jaxb:jaxb-jxc)はMavenプラグインによってラップされているため、通常はランタイムで必要ありません。

Eclipseの使用法

Mavenプロジェクトがなんらかの方法で完全なクラスパスを取得できない場合は、デバッグ出力をオンにしてMavenコンソールを確認してください。次のエラーメッセージが表示される場合があります。

[エラー] com.Sun:tools:jarの 'dependencyManagement.dependencies.dependency.systemPath'は絶対パスを指定する必要がありますが、$ {tools.jar} @です

これは、次の問題が原因です。

MavenがJava_HOMEを正しく選択しない

@rustyxによる solution は、-vmオプションのEclipse.ini

-vm
<PATH_TO_JDK>\jre\bin\javaw.exe
58
lexicore