【问题标题】:How to add Spark dependencies in spring-boot multi module Java 11 project如何在 spring-boot 多模块 Java 11 项目中添加 Spark 依赖项
【发布时间】:2020-02-12 07:30:38
【问题描述】:

每当我在我的多模块项目中添加 module-info.java 时,我都无法导入我的 Spark 依赖项 - 其他一切似乎都在工作

<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-core_2.12</artifactId>
    <version>3.0.0-preview2</version>
</dependency>
<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-sql_2.12</artifactId>
    <version>3.0.0-preview2</version>
</dependency>

IntelliJ 尝试读取 Maven 依赖项但没有任何结果。

我的模块信息如下所示:

module common {
    exports [...] 
    requires lombok;
    requires spring.data.jpa;
    requires spring.data.commons;
    requires org.apache.commons.lang3;
    requires spring.context;
    requires spring.web;
    requires spring.security.core;
    requires com.google.common;
    requires org.json;
    requires spring.core;
    requires spring.beans;
    requires com.fasterxml.jackson.core;
    requires com.fasterxml.jackson.databind;
    requires spring.jcl;
    requires spring.webmvc;
    requires mongo.java.driver;
    requires org.hibernate.orm.core;
    requires com.fasterxml.jackson.dataformat.csv;
    requires java.sql;
}

也不可能在我的 module-info.java 中添加 org.apache.*。

Spark 是否可能还没有为 Jigsaw 模块和 Java 9+ 做好准备?

【问题讨论】:

    标签: java spring-boot maven apache-spark java-module


    【解决方案1】:

    spark 是否可能还没有为 Jigsaw 模块和 Java 9+ 准备好?

    它确实适用于spark。我可以保证的两个直接原因是:

    1. 他们没有条目

      Automatic-Module-Name: <module-name> 
      

      在工件的 MANIFEST.MF 文件中。

    2. 如果您尝试使用jar 工具描述他们的工件

      jar --describe-module --file=<complete-path>/spark-core_2.12-3.0.0-preview2.jar
      

      由于this answer. 中提到的类似原因,这将无法派生模块描述符


    到达这里后可能有用的资源很少:

    【讨论】:

    • 旁注:即使 spark 可能已准备好成为 build and run with JDK-11,它们也不会暴露其他人可以在 modulepath 上使用的工件。
    • 所以不可能使用带有 java 8 的模块和项目的其余部分让我们说 11?换句话说,任何依赖 Spark 的东西都需要降级到 java 8 吗?或者我可以将它提取为 jar 并以某种方式在类路径中使用它?我认为 jigsaw 模块对于 java >= 9 是可选的,但似乎它们是必需的:(
    • @MichailMichailidis 有多个考虑因素。首先,如果您计划创建模块化应用程序,即在 JDK-11 中包含 module-info.java,那么唯一的方法是更新 spark jar 以手动添加 MANIFEST.MF 中的条目。其次,如果您打算在 JDK-11 上运行,但使用类路径,那么您不需要 module-info.java 并且没有它应该可以像使用 Java-8 一样正常工作。然后,如果创建模块化应用程序是您迁移的唯一目的,那么您可以很好地保留 Java-8。您可以为您的应用进行相应选择。
    猜你喜欢
    • 1970-01-01
    • 2018-02-21
    • 2016-02-15
    • 2020-01-12
    • 2019-08-07
    • 2018-10-06
    • 2019-08-02
    • 2018-03-25
    • 2017-02-26
    相关资源
    最近更新 更多