【发布时间】:2019-10-17 16:10:41
【问题描述】:
我正在尝试在 java 上使用 spark 运行应用程序,但是当我尝试 mvn package; mvn exec:java 时,我一直遇到 NoClassDefFoundError。
当我尝试在 PowerShell 和 Intellij 中运行程序并不断收到相同的错误(如下)。当我删除一堆 maven 依赖项时,错误消失了,servlet 在 localhost 上运行。
错误信息:
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>
servlet 仅使用 spark 依赖项即可正常运行:
<dependency>
<groupId>com.sparkjava</groupId>
<artifactId>spark-core</artifactId>
<version>2.6.0</version>
</dependency>
但如果我再添加,就会发生异常
【问题讨论】:
-
更新:只是 edu.stanford.nlp 依赖导致了问题
-
这可能是一些依赖问题,有些地方你需要一些特定版本的 jar,
标签: java apache-spark classnotfoundexception noclassdeffounderror deploying