ข้อผิดพลาดในการแบ่งคลาสกับ Joda Time โดยใช้ Scala


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 แต่ได้รับข้อผิดพลาดเดียวกัน

คำตอบ:


176

เพิ่มการอ้างอิงนี้:

"org.joda"% "joda- แปลง"% "1.8.1"

เป็นการพึ่งพาทางเลือกของ joda-time ฉันต้องเพิ่มในโปรเจ็กต์ของฉันเองเพื่อให้คอมไพเลอร์ scala ยอมรับการทำงานกับโถเวลา joda

ดูเหมือนว่าปัญหาของคุณจะเหมือนเดิม

เวอร์ชันอยู่ในขณะแก้ไขเวอร์ชันล่าสุดสามารถพบได้ที่นี่


61
ในอนาคตเหตุผลที่ไม่เป็นทางเลือกสำหรับ Scala ก็คือคอมไพเลอร์ Java สามารถโหลดคลาสที่ไม่มีคำอธิบายประกอบและ Scala ไม่ทำ ฉันมีปัญหาเดียวกันเช่นกับ Guava และ JSR-305
Alexey Romanov

ทำงานให้ฉัน 12 กุมภาพันธ์ 2013 "joda-time" % "joda-time" % "2.1"และ"org.joda" % "joda-convert" % "1.2"
Dustin Getz

9
เป็นที่ยอมรับไม่ได้ว่าไลบรารีใช้งานไม่ได้เนื่องจากมีคนคิดว่าการแยกไลบรารีบางส่วนออกจากกันเป็นเรื่องปกติ โดยเฉพาะอย่างยิ่งห้องสมุดเวลา defacto ของ java
Hassan Syed

ฉันไม่แน่ใจ 100% แต่การพึ่งพานี้มีผลต่อพฤติกรรม jodatime ฉันมีโครงการหนึ่งที่มีโหล dependecies แต่ไม่มีjoda-convertดังนั้น toString yyyy-mm-ddThh-mm-ssสำหรับวันที่และเวลาเป็น ผมได้สร้างโครงการที่เรียบง่ายด้วยjodatimeและjoda-convertdependeices yyyy-mm-ddThh-mm-ss.000Zดังนั้นในนั้นฉันมี
เชอร์รี่

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.