Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java NoClassDefFound:Scala/xml/metadata_Java_Scala_Maven_Apache Spark - Fatal编程技术网

Java NoClassDefFound:Scala/xml/metadata

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(

我正在用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().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"