Я добавляю репозиторий 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)
Я попробовал версию 2.0 joda-time, но получил ту же ошибку.
"joda-time" % "joda-time" % "2.1"
и"org.joda" % "joda-convert" % "1.2"
joda-convert
toString для Datetime естьyyyy-mm-ddThh-mm-ss
. Я создал простой проект сjodatime
иjoda-convert
зависимостями, так что в нем естьyyyy-mm-ddThh-mm-ss.000Z
.a.jar
которая содержит@B class A
, откуда@B
берется аннотацияb.jar
. В Java, вы можете использоватьA
в вашем коде , если у вас естьa.jar
безb.jar
на пути сборки; в Scala это невозможно.Я столкнулся с аналогичной проблемой:
[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
решило проблему.источник