Error de clase rota con Joda Time usando Scala


91

Estoy agregando el repositorio de Joda Time a SBT con

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

Entonces felizmente lo uso así:

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

Pero, cuando compilo el proyecto en SBT, obtengo un desagradable:

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

Probé la versión 2.0 de joda-time, pero aparece el mismo error.

Respuestas:


177

Agregue esta dependencia:

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

Es una dependencia opcional de joda-time. Tuve que agregarlo en mi propio proyecto para que el compilador scala aceptara trabajar con joda-time jar.

Tu problema parece ser el mismo.

La versión es como en el momento de la edición, las últimas versiones se pueden encontrar aquí


61
Para el futuro, la razón por la que no es opcional para Scala es que el compilador de Java puede cargar una clase con anotaciones faltantes, y Scala no. Tuve el mismo problema, por ejemplo, con Guava y JSR-305.
Alexey Romanov

trabajó para mí 12 de febrero de 2013, "joda-time" % "joda-time" % "2.1"y"org.joda" % "joda-convert" % "1.2"
Dustin Getz

9
Es inaceptable que una biblioteca no funcione porque alguien pensó que sería pragmático mantener separadas ciertas bibliotecas. Especialmente la biblioteca de tiempo defacto de Java.
Hassan Syed

No estoy seguro al 100%, pero esta dependencia afecta el comportamiento de jodatime. Tengo un proyecto con docenas de dependencias, pero sin joda-converteso toString for Datetime is yyyy-mm-ddThh-mm-ss. He creado un proyecto simple con jodatimey joda-convertdependencias, por lo que tengo yyyy-mm-ddThh-mm-ss.000Z.
Cherry

5
@ user2829759 Digamos que tiene una dependencia a.jarque contiene a @B class A, de donde @Bproviene la anotación b.jar. En Java, se puede utilizar Aen su código si tiene a.jarsin b.jaren la trayectoria de la estructura; en Scala, no puedes.
Alexey Romanov

1

Me estaba encontrando con un problema similar:

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

Agregar explícitamente una dependencia jcip-annotations-1.0.jarresolvió el problema.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.