Maven找不到随brew安装的Spark库

时间:2019-06-09 14:57:45

标签: java eclipse maven apache-spark

我是Maven和Spark的新手,我想和他们两个一起玩。 我在OSx上,所以我都使用brew安装了它们。 在eclipse上,我使用快速向导创建了一个Maven项目,并创建了以下pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" 

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.and.app</groupId>
  <artifactId>myapp</artifactId>
  <version>0.0.1-SNAPSHOT</version>


<dependencies>
    <dependency>
        <groupId>com.sparkjava</groupId>
        <artifactId>spark-core</artifactId>
        <version>2.4.3</version>
    </dependency>
</dependencies>
</project>

而主班是:

package myapp;

import static spark.Spark.*;

public class Driver {

    public static void main(String[] args) {
        get("/hello", (req, res) -> "Hello World"); }

}

但是出现以下错误:

  

缺少工件com.sparkjava:spark-core:jar:2.4.3

我认为这是因为brew安装,所以我添加了一行:

 <systemPath>\usr\local\Cellar\apache-spark\2.4.3\libexec\jars</systemPath>

作为火花罐的显式路径,紧接在pom.xml中的version标记之后 到目前为止,我还没有成功。

我在做什么错了?

P.S .:我验证了Maven和Spark的安装。

2 个答案:

答案 0 :(得分:2)

Maven正在自动从网络获取依赖关系。如果要使用本地安装的jar,则必须将它们添加到本地maven存储库中:

https://maven.apache.org/guides/mini/guide-3rd-party-jars-local.html

但是我想知道:您还可以告诉Maven自己获取spark依赖项。它似乎适用于Maven用户: https://mvnrepository.com/artifact/org.apache.spark/spark-core 因此,依存关系应为:

<!-- https://mvnrepository.com/artifact/org.apache.spark/spark-core -->
<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-core_2.12</artifactId>
    <version>2.4.3</version>
</dependency>

答案 1 :(得分:1)

检查system范围的定义:

  

此作用域与提供的作用域相似,只是您必须提供显式包含它的JAR。该工件始终可用,并且不会在存储库中查找。

这意味着您应该为代码的每个启动提供jar的路径。以及用于编译(由于导入)。更改范围或为编译器显式提供jar的路径。