Scala(ビルドツールはxsbt)でjoda-time 1.6を使っていて、
@xuwei_kさんのまさしくこの状況にハマりました。
joda timeのDateTimeのコンストラクタがScalaと相性悪い・・・と思ったら単なる勘違いだった件
jodatimeのコンストラクタをScalaから呼べないとおもったら、単に自分の勘違いだった件
scalatimeというjoda timeをScalaでラップしたようなライブラリがあるのですが、
それはおいておいて、とりあえずjoda time 2.0使おうと思ってちょっとはまったのでメモ的に記します。
設定
~/build.sbtに下記の設定をします。
libraryDependencies ++= Seq( "joda-time" % "joda-time" % "2.0", //*1 "org.joda" % "joda-convert" % "1.1" //*2 )
*1は普通にjoda-time 2.0を取得する設定ですが、
*2を加えています。
*1だけですと、
error: error while loading DateTime, Missing dependency 'class org.joda.convert.FromString', required by /Users/xxxxx/.m2/repository/joda-time/joda- time/2.0/joda-time-2.0.jar( org/joda/time/DateTime.class)
のようなエラーが出ます。
この原因は、
https://groups.google.com/d/topic/scala-user/aM4LNwNksXQ/discussion
によると、
「joda-convertはmavenのpom上ではOptionalであり、Javaでは取得できなくても動くけど、とのこと(意訳)。
Scalaだとすべてのclassが参照するclassはcompile時にclasspath上に存在しないといけないのでエラーになるよ」
ということで、sbtでは*2を明示的に加えてあげる必要があります。
0 件のコメント:
コメントを投稿