java - 尝试在命令行上运行 Java Spark 应用程序时出现 NoClassDefFoundError

标签 java apache-spark classnotfoundexception noclassdeffounderror deploying

我正在尝试在java上使用spark运行应用程序,但是当我尝试mvn package; mvn exec:java 我一直遇到 NoClassDefFoundError。

当我尝试在 PowerShell 和 Intellij 中运行该程序时,不断收到相同的错误(如下)。当我删除一堆 Maven 依赖项时,错误消失并且 servlet 在本地主机上运行。

错误信息:

Exception in thread "Thread-0" java.lang.NoClassDefFoundError: javax/servlet/http/HttpSessionIdListener
    at org.eclipse.jetty.server.session.SessionHandler.<clinit>(SessionHandler.java:140)
    at spark.embeddedserver.jetty.EmbeddedJettyFactory.create(EmbeddedJettyFactory.java:43)
    at spark.embeddedserver.EmbeddedServers.create(EmbeddedServers.java:65)
    at spark.Service.lambda$init$2(Service.java:497)
    at java.base/java.lang.Thread.run(Thread.java:835)
Caused by: java.lang.ClassNotFoundException: javax.servlet.http.HttpSessionIdListener
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
    ... 5 more

我从 pom.xml 中删除的依赖项:

<dependency>
            <groupId>com.googlecode.json-simple</groupId>
            <artifactId>json-simple</artifactId>
            <version>1.1</version>
        </dependency>

        <dependency>
            <groupId>edu.stanford.nlp</groupId>
            <artifactId>stanford-corenlp</artifactId>
            <version>3.9.2</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.13</version>
        </dependency>

        <dependency>
            <groupId>edu.stanford.nlp</groupId>
            <artifactId>stanford-corenlp</artifactId>
            <version>3.9.2</version>
            <classifier>models</classifier>
        </dependency>

仅使用 Spark 依赖项即可正确运行 servlet:

        <dependency>
            <groupId>com.sparkjava</groupId>
            <artifactId>spark-core</artifactId>
            <version>2.6.0</version>
        </dependency>

但是如果我再添加,就会发生异常

最佳答案

解决了! Sparkjava 依赖项还需要 5 个依赖项才能运行,可以在此处找到:https://mvnrepository.com/artifact/com.sparkjava/spark-core/2.9.1

关于java - 尝试在命令行上运行 Java Spark 应用程序时出现 NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58436793/

相关文章:

java - 使用 Apache Spark 将每个组的前 2 行与 Java 展平

java - 如何用 Java 读取/写入堆外内存?

Symfony2 - 在产品环境中找不到类

java - android程序中的ClassNotFoundException

Java作业与扫描仪输入的问题

java - 为什么Spring Security需要对权限集合进行排序?

java - 使用for循环java逆向生成一个数字

java - 无法删除 fragment

scala - 连接 RDD 上的随机分区器行为

java - 配置错误。未找到类 [com.mysql.cj.jdbc.Driver]。 EclipseLink、MySQL 驱动程序