2

これは、JAXB を使用してキャメルケース化された Java との間で下線付き XML を un/marshall する方法からの後続の質問です。

Scala (sbt 0.10.0) から Moxy (EclipseLink の一部) を使用しようとしていますが、インポートして使用する方法を理解するのに苦労しています。これを 2 つの部分に分割するには、次のようにします。

1.Moxyのインポート

一度、mvnrepository.comで適切なものが見つかりません。このページを Maven setupで読んだことから、次のことがうまくいくことを期待していました:

// /project/Dependencies.scala
object Dependencies {
  val resolutionRepos = Seq(
    ScalaToolsSnapshots,
    "EclipseLink Repo" at "http://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/rt/eclipselink/maven.repo"
  )

  object V {
    val moxy      = "2.1.0"
  }

  object Runtime {
    // We use Moxy for the naming convention transforms
    val moxy        = "org.eclipse.persistence"   % "javax.eclipselink"   % V.moxy
  }

しかしsbtは文句を言っているmodule not found: org.eclipse.persistence#javax.eclipselink;2.1.0

2. Moxy を JAXB プロバイダーとして指定する

上記が修正されたので (SRI に感謝します!)、次の問題は、Moxy を JAXB プロバイダーとして指定する際に問題が発生することです。Blaise Doughan によるこの記事の指示からjaxb.properties、次のエントリを含むファイルを表現と同じパッケージに入れる必要があるようです。

javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory

しかし残念なことに、これは sbt を実行しているときには認識されないようです。何か案は?

感謝して受け取った助け。そして皆様、メリークリスマス!

4

1 に答える 1

2

警告: 私は SBT 構文にあまり詳しくありません

そうは言っても、あなたの問題はsbtからリソースをロードする問題のようです。通常、プロジェクトのリソース フォルダーには、プロパティ ファイル、画像、およびその他の関連アイテムがあります (sbt または maven - sbt は maven プロジェクト構造に従っているため、さらに多くの場合)。jaxb.properties は JAXB 表現クラスと同じパッケージにある必要があるため、src フォルダーでこれを探すように sbt を構成する必要があります。このページ、特に管理されていない依存関係と管理されている依存関係に関するセクションをご覧ください。

あるいは、この SO ページでは、リソースの問題について説明しています。これがあなたの質問に答えることを願っています。:)


編集

考慮できるもう 1 つのことは、非ソース プロジェクト コンポーネントはフォルダーから sbt によって自動的に取得されるため、フォルダー内のようにパスを複製するディレクトリresourcesに jaxb.properties を配置するだけでよいということです。たとえば、JAXB 表現がディレクトリ内のパッケージにある場合、その構造を複製してそこにプロパティ ファイルを配置できます。によってクラスパスにロードされると思います。resourcessrccom.foo.bar.bazsrcresourcessrc/main/resources/com/foo/bar/bazsbt

于 2011-12-26T00:14:22.653 に答える