无法在Apache Ignite中加载类名属性

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法在Apache Ignite中加载类名属性相关的知识,希望对你有一定的参考价值。

我正在尝试使用Ignite-Spark插件为Ignite版本2.2.0启动Ignite上下文。这就是我声明上下文的方式:

val igniteContext:IgniteContext=new IgniteContext(sparkSession.sparkContext,()=>new IgniteConfiguration().setDiscoverySpi(new TcpDiscoverySpi().
      setLocalAddress("127.0.0.1").setLocalPort(48511).setIpFinder(new TcpDiscoveryMulticastIpFinder().
      setAddresses(new util.ArrayList[String]))).setCommunicationSpi(new TcpCommunicationSpi().setLocalPort(48512)),true)

但是,当上下文尝试启动时,我收到此错误:

IgniteException: Failed to load class names properties file packaged with ignite binaries 
[file=META-INF/classnames.properties, 
ldr=org.apache.spark.util.MutableURLClassLoader@2bbaf4f0]

我在这里读到http://apache-ignite-developers.2346864.n4.nabble.com/classnames-properties-file-is-out-of-date-td2213.html,“'classnames.properties'文件位于ignite-core / META-INF文件夹中。该文件由Ignite marshallers内部使用。”

我对Ignite的内部结构并不太熟悉。这可能来自我的Ignite jar依赖项的位置吗?我使用sbt程序集来构建我的.jar文件。

感谢您的时间。 Ť

答案

结果我导致了这个问题。为了防止在运行sbt程序集时出现合并冲突,我在build.sbt文件中添加了以下合并策略

name := "Spark_Ignite_Project"

version := "0.1"

scalaVersion := "2.11.8"
libraryDependencies += "org.apache.spark" %% "spark-core" % "2.2.0"
libraryDependencies += "org.apache.spark" %% "spark-sql" % "2.2.0"
libraryDependencies += "org.apache.spark" %% "spark-streaming" % "2.2.0"
libraryDependencies += "org.apache.spark" %% "spark-streaming-kafka-0-10" % "2.2.0"
libraryDependencies += "org.apache.ignite" % "ignite-core" % "2.2.0"
libraryDependencies += "org.apache.ignite" % "ignite-spring" % "2.2.0"
libraryDependencies += "org.apache.ignite" % "ignite-indexing" % "2.2.0"
libraryDependencies += "org.apache.ignite" % "ignite-log4j" % "2.2.0"


assemblyMergeStrategy in assembly := {
case PathList("META-INF", xs @ _*) => MergeStrategy.discard
case x => MergeStrategy.first
}

这基本上丢弃了META-INF文件夹中的所有文件,这导致了异常。

通过在我不需要打包的依赖项上使用“提供”标签,一切都很顺利。

以上是关于无法在Apache Ignite中加载类名属性的主要内容,如果未能解决你的问题,请参考以下文章

例外如下。 org.apache.flume.FlumeException:无法在flume twitter分析中加载源类型

无法在Apache / 2.2.21(Win32)中加载mod_fcgid

无法在 Spring Boot 中加载外部属性

无法在现有Apache Ignite单节点集群中创建缓存

无法从 amon 在 activemq 中加载 monlets

跨源视频无法在 Chrome 中加载