Spark - Java 8 的小型 Web 框架
总是提到这个框架是针对Java 8的。有人能确认这个框架是向前兼容的吗?我们可以在 Java 17 中使用这个框架的旧版本吗?或者我们是否需要使用最新版本的 Java 17 框架?这个框架版本有 Java 兼容性矩阵吗?如果我们有这样的东西,请帮我提供链接。
我阅读了文档,但没有发现这是否向前兼容。我也没有找到任何 Java 兼容性矩阵。
自 2022 年 12 月 9 日以来,我一直在 Java 17 的生产中使用 SparkJava,并且没有遇到任何 Java 17 相关问题。
在此之前,我们从 2020-04-06 开始使用 Java 11。
我在生产环境中看到的唯一区别是 Java 17 使用的内存比 Java 11 少。
自己尝试一下,看看是否有任何问题。这对我们来说非常有用。
让我们看看而不是猜测。
sparkjava.com
演示要使用的依赖项是:
<dependency>
<groupId>com.sparkjava</groupId>
<artifactId>spark-core</artifactId>
<version>2.9.4</version>
</dependency>
pom.xml
,我们会看到这个:
<properties>
<java.version>1.8</java.version>
<jetty.version>9.4.48.v20220622</jetty.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<powermock.version>1.7.4</powermock.version>
<mockito.version>1.10.19</mockito.version>
</properties>
这意味着,没有对 Java 17 的显式支持以及与 Java 17 相关的功能,可能不起作用。
我使用最后一个 springboot 版本 3.3.x 和许多 Spark 版本,如 2.x 和 3.x 以及 JDK 17,错误总是相同的:
java.lang.IllegalAccessError: class org.apache.spark.storage.StorageUtils$ (in unnamed module @0x625732) cannot access class sun.nio.ch.DirectBuffer (in module java.base) because module java.base does not export sun.nio.ch to unnamed module @0x625732
我不明白为什么有些人说spark可以与JDK17一起工作,因为对我来说这是不可能的......
<!-- Spark Core dependency -->
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.12</artifactId>
<version>${SPARK_VERSION}</version>
</dependency>
<!-- Spark SQL dependency -->
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.12</artifactId>
<version>${SPARK_VERSION}</version>
</dependency>