Помилка класу з помилкою 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)

Я спробував версію 2.0 joda-time, але отримав ту ж помилку.

Відповіді:


177

Додайте цю залежність:

"org.joda"% "joda-конвертувати"% "1.8.1"

Це необов’язкова залежність joda-часу. Мені довелося додати його у своєму власному проекті, щоб компілятор Scala прийняв роботу з joda-time jar.

Ваша проблема, схоже, однакова.

Версія на момент редагування, останні версії можна знайти тут


61
Надалі причина, через яку це не є обов’язковим для Scala, полягає в тому, що компілятор Java може завантажувати клас із відсутніми анотаціями, а Scala - ні. У мене була така ж проблема, наприклад, із гуавою та JSR-305.
Олексій Романов

працював у мене 12 лютого 2013 року "joda-time" % "joda-time" % "2.1"та"org.joda" % "joda-convert" % "1.2"
Дастін Гец

9
неприпустимо, що бібліотека не працює, тому що хтось вважав, що було б прагматично тримати певні бібліотеки окремо. Особливо бібліотека часу Java для дефакто.
Hassan Syed

Я не впевнений на 100%, але ця залежність впливає на поведінку jodatime. У мене є один проект із дюжиною залежностей, але без joda-convertцього toString для Datetime є yyyy-mm-ddThh-mm-ss. Я створив простий проект з jodatimeі joda-convertdependeices, тому в ньому у мене є yyyy-mm-ddThh-mm-ss.000Z.
Cherry

5
@ user2829759 Скажімо, у вас є залежність, a.jarяка містить a @B class A, звідки @Bпоходить анотація b.jar. В Java, ви можете використовувати Aу вашому коді , якщо у вас є a.jarбез b.jarна шляху складання; у Скалі не можна.
Олексій Романов

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вирішило проблему.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.