【问题标题】:json4s and Joda Timejson4s 和乔达时间
【发布时间】:2015-12-11 18:07:42
【问题描述】:

我在使用 Joda time 和 json4s 时遇到问题,我得到的错误如下:

Exception in thread "main" java.lang.NoClassDefFoundError: scala/reflect/Manifest$
    at org.json4s.ext.DurationSerializer$.<init>(JodaTimeSerializers.scala:41)
    at org.json4s.ext.DurationSerializer$.<clinit>(JodaTimeSerializers.scala)
    at org.json4s.ext.JodaTimeSerializers$.all(JodaTimeSerializers.scala:26)
    at com.xxx.dts.toolset.jsonWrite$.jsonClob(jsonWrite.scala:21)
    at com.xxx.dts.dq.profiling.DQProfilingEngine.profile(DQProfilingEngine.scala:253)
    at com.xxx.dts.dq.profiling.Profiler$.main(DQProfilingEngine.scala:58)
    at com.xxx.dts.dq.profiling.Profiler.main(DQProfilingEngine.scala)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:569)
    at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:166)
    at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:189)
    at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:110)
    at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
Caused by: java.lang.ClassNotFoundException: scala.reflect.Manifest$
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    ... 16 more

对于 json4s,我有以下设置:

     implicit val formats = org.json4s.DefaultFormats ++ org.json4s.ext.JodaTimeSerializers.all

val  dateTime = new DateTime()
("Date" -> dateTime.toString)

【问题讨论】:

  • 你使用哪个 scala 版本?

标签: scala json4s


【解决方案1】:

我怀疑这个问题和json4s本身没有太大关系。在网上搜索 NoClassDefFoundError: scala/reflect/Manifest$ 会发现很多错误报告,这些错误似乎与 jar 版本问题以及其他配置问题有关。

【讨论】:

  • 嗯,很奇怪,因为一旦我删除了 ++ org.json4s.ext.JodaTimeSerializers.all,一切都恢复了。
  • 根据网络搜索的结果来判断,JodaTimeSerializers 在一个单独的 jar 中,json4s-ext.jar。也许 json4s-ext 的版本与其他 json4s jar(s) 冲突。只是在这里猜测。
猜你喜欢
  • 2019-08-04
  • 1970-01-01
  • 2014-02-03
  • 2013-03-18
  • 1970-01-01
  • 2015-11-28
  • 2021-08-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多