java.lang.ClassNotFoundException: org.spark_project.guava.collect.MapMaker - PullRequest
0 голосов
/ 06 июня 2018

Я пытаюсь интегрировать apache spark с проектом весенней загрузки cassandra.Но при запуске проекта выдается следующая ошибка:

    Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: org/spark_project/guava/collect/MapMaker] with root cause
    java.lang.ClassNotFoundException: org.spark_project.guava.collect.MapMaker

Я проверил свои maven-зависимости, и файл mapmaker присутствовал там в файле spark-network-common_2.11.jar в 'org / spark_project / guava /сбор /.Вот зависимости pom-файла, которые я использую:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-cassandra</artifactId>
    </dependency>

    <!-- https://mvnrepository.com/artifact/com.datastax.cassandra/cassandra-driver-core -->
    <dependency>
        <groupId>com.datastax.cassandra</groupId>
        <artifactId>cassandra-driver-core</artifactId>
        <version>3.5.0</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-network-common -->
    <!-- <dependency>
       <groupId>org.apache.spark</groupId>
       <artifactId>spark-network-common_2.10</artifactId>
       <version>1.3.0</version>
    </dependency> -->
    <!-- <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-network-common_2.11</artifactId>
        <version>2.2.1</version>
    </dependency> -->


    <!-- https://mvnrepository.com/artifact/com.datastax.cassandra/cassandra-driver-mapping -->
    <!-- <dependency> <groupId>com.datastax.cassandra</groupId> <artifactId>cassandra-driver-mapping</artifactId> 
        <version>3.5.0</version> </dependency> -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>


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




    <!-- https://mvnrepository.com/artifact/com.datastax.spark/spark-cassandra-connector -->
    <dependency>
        <groupId>com.datastax.spark</groupId>
        <artifactId>spark-cassandra-connector_2.11</artifactId>
        <version>2.0.8</version>
    </dependency>


    <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-sql -->
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-sql_2.11</artifactId>
        <version>2.2.1</version>
    </dependency>

</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

В spark-network-common_2.11.jar идет зависимость от spark-core, но я пытался добавить ее отдельно, но даже это не помогло.не работаетВ чем может быть проблема, что spring-boot не может идентифицировать файл mapmaker во время выполнения?Любая помощь приветствуется.

1 Ответ

0 голосов
/ 08 июня 2018

Путь пакета «org.spark_project.guava.collect.MapMaker» в значительной степени подразумевает, что пакет guava был перемещен в spark_project во избежание ада зависимости.

Подобные вещи управляютсяпроцесс сборки, и его можно легко упустить из источников несовместимости между библиотеками.

Мой инстинкт заключается в том, что вы можете использовать несовпадающие версии библиотек, которые технически могут быть совместимы, не из-за перемещения guavaпо-разному.

У вас есть

   <artifactId>spark-network-common_2.10</artifactId>

Закомментировано, когда в списке других зависимостей есть 2.11.

Они представляют номера версий используемой среды выполнения Scala Language + и должнысопоставлять с любыми проектами, использующими Scala.

Какой класс / библиотека пытается загрузить перемещенную Guava?Это должно дать вам подсказку о том, какая библиотека потенциально устарела / не соответствует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...