在 Java Spark 中使用 Jackson 2.9.9

Jas*_*per 7 java jackson apache-spark apache-spark-mllib

我正在尝试使用 MLLIB 库 (java),但我的依赖项之一使用 Jackson 2.9.9。我注意到提出了一个拉取请求,以便主分支的依赖项升级到这个特定版本。现在我想使用这个主分支,所以我使用./dev/make-distribution.sh. 但不确定要将哪些 jar 包复制到我的项目中。我试图复制所有 3.0.0 快照,但最终class file for scala.Cloneable not found在我的 Java 程序中得到了一个。

我还在./build/mvn -DskipTests install~/.m2 下安装了 SNAPSHOT 依赖项。

我将它们添加到 gradle 构建文件中

    // https://mvnrepository.com/artifact/org.apache.spark/spark-core
    compile group: 'org.apache.spark', name: 'spark-core_2.12', version: '3.0.0-SNAPSHOT'

    // https://mvnrepository.com/artifact/org.apache.spark/spark-mllib
    compile group: 'org.apache.spark', name: 'spark-mllib_2.12', version: '3.0.0-SNAPSHOT'
Run Code Online (Sandbox Code Playgroud)

但是在 java 11 下执行时,它会抱怨:

Exception in thread "main" java.lang.NoSuchFieldError: JAVA_9
    at org.apache.spark.storage.StorageUtils$.<init>(StorageUtils.scala:207)
Run Code Online (Sandbox Code Playgroud)

由于 java 9 不再可用,我想知道如何进一步调试这个问题。我假设至少需要 java 9 但该字段不再存在?

小智 10

我注意到在源代码 StorageUtils.scala 中,它为JAVA_9 引入了 apache common-lang3。您是否检查过类路径中是否包含 apache common-lang3?它通过将 commons-lang3-3.9.jar 添加到我的类路径解决了我的问题。

  • 为什么?@alee 提出了一些可能有效的解决方案。 (2认同)