Scalaを使用したJoda Timeでのクラス破損エラー


91

私はJoda TimeリポジトリをSBTに追加しています

libraryDependencies ++= Seq(
  "joda-time"         % "joda-time"           % "2.1"
)

それから私は陽気にこのようにそれを使います:

 val ymd = org.joda.time.format.DateTimeFormat.forPattern("yyyyMMdd")
  ymd.parseDateTime("20121212")

しかし、SBTでプロジェクトをコンパイルすると、厄介な問題が発生します。

[warn] Class org.joda.convert.FromString not found - continuing with a stub.
[warn] Caught: java.lang.NullPointerException while parsing annotations in /home/jack/.ivy2/cache/joda-time/joda-time/jars/joda-time-2.1.jar(org/joda/time/DateTime.class)
[error] error while loading DateTime, class file '/home/jack/.ivy2/cache/joda-time/joda-time/jars/joda-time-2.1.jar(org/joda/time/DateTime.class)' is broken
[error] (class java.lang.RuntimeException/bad constant pool tag 10 at byte 42)

joda-timeの2.0バージョンを試しましたが、同じエラーが発生します。

回答:


177

この依存関係を追加します。

"org.joda"% "joda-convert"% "1.8.1"

これはjoda-timeのオプションの依存関係です。私のスカラコンパイラがjoda-time jarでの作業を受け入れるためには、それを自分のプロジェクトに追加する必要がありました。

あなたの問題は同じようです。

バージョンは編集時のものであり、最新バージョンはここにあります


61
将来的には、それがScalaにとってオプションではない理由は、Javaコンパイラーがアノテーションが欠落しているクラスをロードできるが、Scalaはそうではないためです。たとえば、GuavaとJSR-305で同じ問題が発生しました。
Alexey Romanov

2013年2月12日私のために働いた、"joda-time" % "joda-time" % "2.1"そして"org.joda" % "joda-convert" % "1.2"
ダスティンゲッツ

9
特定のライブラリを分離しておくことが実用的だと誰かが思ったため、ライブラリが機能しないことは受け入れられません。特にjavaの事実上の時間ライブラリ。
Hassan Syed 2013年

100%かどうかはわかりませんが、この依存関係はjodatimeの動作に影響します。私には1ダースの依存関係があるプロジェクトがありますが、それがなけれjoda-convertば、DatetimeのtoStringはyyyy-mm-ddThh-mm-ssです。jodatimejoda-convert依存関係のある簡単なプロジェクトを作成したので、その中にを持っていyyyy-mm-ddThh-mm-ss.000Zます。
2015年

5
@ user2829759あなたは依存関係があるとしましょうa.jar含ま@B class A注釈は、@Bから来ているのb.jar。Javaでは、あなたが使用することができA、あなたが持っている場合は、あなたのコード内でa.jarなくてb.jarビルド・パス上。Scalaではできません。
Alexey Romanov

1

私は同様の問題に遭遇していました:

[warn] Class net.jcip.annotations.NotThreadSafe not found - continuing with a stub.
[warn] Caught: java.lang.NullPointerException while parsing annotations in ~/.ivy2-p2/cache/org.opensaml/xmltooling/jars/xmltooling-1.3.4.jar(org/opensaml/xml/util/IDIndex.class)
[error] error while loading AttributeMap, class file '~/.ivy2-p2/cache/org.opensaml/xmltooling/jars/xmltooling-1.3.4.jar(org/opensaml/xml/util/AttributeMap.class)' is broken
[error] (class java.lang.RuntimeException/bad constant pool index: 0 at pos: 12058)

依存関係を明示的に追加するjcip-annotations-1.0.jarことで問題は解決しました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.