Java NoClassDefFound:Scala/xml/metadata
我正在用Java运行一个简单的spark程序(IDE:EclipseLuna,Maven) 我的示例程序是Java NoClassDefFound:Scala/xml/metadata,java,scala,maven,apache-spark,Java,Scala,Maven,Apache Spark,我正在用Java运行一个简单的spark程序(IDE:EclipseLuna,Maven) 我的示例程序是 import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaSparkContext; public class testSpark { public static void main(String[] args) { SparkConf conf = new SparkConf(
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaSparkContext;
public class testSpark {
public static void main(String[] args) {
SparkConf conf = new SparkConf().setAppName("Testing").setMaster("local");
JavaSparkContext sc = new JavaSparkContext(conf);
System.out.println(sc.appName());
}
}
但我在运行示例程序时出错
Exception in thread "main" java.lang.NoClassDefFoundError:
scala/xml/MetaData at
org.apache.spark.ui.jobs.JobsTab.<init>(JobsTab.scala:30) at
org.apache.spark.ui.SparkUI.initialize(SparkUI.scala:50) at
org.apache.spark.ui.SparkUI.<init>(SparkUI.scala:61) at
iScope.testSpark.main(testSpark.java:9)
Caused by:
java.lang.ClassNotFoundException: scala.xml.MetaData at
java.net.URLClassLoader.findClass(Unknown Source) at
java.lang.ClassLoader.loadClass(Unknown Source)
线程“main”java.lang.NoClassDefFoundError中出现异常:
scala/xml/MetaData位于
org.apache.spark.ui.jobs.JobsTab.(JobsTab.scala:30)位于
org.apache.spark.ui.SparkUI.initialize(SparkUI.scala:50)位于
org.apache.spark.ui.SparkUI.(SparkUI.scala:61)位于
main(testSpark.java:9)
原因:
java.lang.ClassNotFoundException:scala.xml.MetaData位于
java.net.URLClassLoader.findClass(未知源代码)位于
java.lang.ClassLoader.loadClass(未知源)
我的pom.xml文件是
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>1.2.1</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>18.0</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-mllib_2.11</artifactId>
<version>1.2.1</version>
</dependency>
org.apache.spark
spark-core_2.11
1.2.1
番石榴
番石榴
18
org.apache.spark
spark-mllib_2.11
1.2.1
您需要将包含此类的类或.jar文件添加到java类路径中。SparkUI似乎使用scala包,请尝试将此DSependence添加到pom文件中,以将scala.xml包放在类路径中
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-xml</artifactId>
<version>2.11.0-M4</version>
</dependency>
org.scala-lang
scala xml
2.11.0-M4
添加以下依赖项修复了我的问题
<dependency>
<groupId>org.scala-lang.modules</groupId>
<artifactId>scala-xml_2.11</artifactId>
<version>1.0.6</version>
</dependency>
org.scala-lang.modules
scala-xml_2.11
1.0.6
正如异常的堆栈跟踪清楚地指出的那样,当SparkUI试图构建Jobs选项卡时,问题就会发生。为此,JobsTab类(org.apache.spark.ui.jobs.JobsTab
)尝试创建一个页面(org.apache.spark.ui.jobs.JobPage
)并将其附加到自身。如果查看JobPage源代码,您会注意到它大量使用了scala.xml(),这可能是您缺少的
正如其他贡献者已经指出的,将scala.xml库添加到依赖项列表中应该可以解决这个问题。在撰写本文时,Scala 2.13的最新版本是1.2.0(您可以查看更新),因此:
Maven:
org.scala-lang.modules
scala-xml_2.13
1.2.0
格拉德尔:
编译组:“org.scala-lang.modules”,名称:“scala-xml_2.13”,版本:“1.2.0”
SBT:
libraryDependencies+=“org.scala-lang.modules”%%“scala xml”%%“1.2.0”
您是否检查了pom.xml的src-in标记?如果右键单击项目,在“maven”下应该有一个选项“启用依赖关系管理”。我看不到“启用依赖关系管理”。检查此URL:
Maven:
<dependency>
<groupId>org.scala-lang.modules</groupId>
<artifactId>scala-xml_2.13</artifactId>
<version>1.2.0</version>
</dependency>
Gradle:
compile group: 'org.scala-lang.modules', name: 'scala-xml_2.13', version: '1.2.0'
SBT:
libraryDependencies += "org.scala-lang.modules" %% "scala-xml" % "1.2.0"