Kelas rusak kesalahan dengan Joda Waktu menggunakan Scala

91

Saya menambahkan repositori Joda Time ke SBT dengan

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

Lalu saya dengan riang menggunakannya seperti ini:

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

Tapi, ketika saya mengkompilasi proyek di SBT, saya mendapatkan pesan yang tidak menyenangkan:

[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)

Saya mencoba Joda-time versi 2.0, tetapi mendapatkan error yang sama.

Mendongkrak
sumber

Jawaban:

176

Tambahkan ketergantungan ini:

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

Ini adalah ketergantungan opsional joda-time. Saya harus menambahkannya dalam proyek saya sendiri agar scala compiler dapat menerima bekerja dengan joda-time jar.

Masalah Anda sepertinya sama.

Versi pada saat pengeditan, versi terbaru dapat ditemukan di sini

David Pierre
sumber
61
Untuk masa depan, alasan ini bukan opsional untuk Scala adalah bahwa compiler Java dapat memuat kelas dengan anotasi yang hilang, dan Scala tidak. Saya memiliki masalah yang sama, misalnya, dengan Guava dan JSR-305.
Alexey Romanov
bekerja untuk saya 12 Feb 2013, "joda-time" % "joda-time" % "2.1"dan"org.joda" % "joda-convert" % "1.2"
Dustin Getz
9
tidak dapat diterima bahwa perpustakaan tidak berfungsi karena seseorang mengira akan pragmatis untuk memisahkan perpustakaan tertentu. Terutama perpustakaan waktu defacto java.
Hassan Syed
Saya tidak yakin 100%, tetapi ketergantungan ini memengaruhi perilaku jodatime. Saya punya satu proyek dengan lusinan dependecies, tetapi tanpa joda-converttoString untuk Datetime yyyy-mm-ddThh-mm-ss. Saya telah membuat proyek sederhana dengan jodatimedan joda-convertketergantungan, jadi di dalamnya saya punya yyyy-mm-ddThh-mm-ss.000Z.
Cherry
5
@ user2829759 Katakanlah Anda memiliki dependensi a.jaryang berisi @B class A, dari mana anotasi @Bberasal b.jar. Di Jawa, Anda dapat menggunakan Adalam kode Anda jika Anda memiliki a.jartanpa b.jardi jalan membangun; di Scala, Anda tidak bisa.
Alexey Romanov
1

Saya mengalami masalah serupa:

[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)

Menambahkan dependensi secara eksplisit jcip-annotations-1.0.jarmenyelesaikan masalah.

mn2013
sumber