illegal cyclic reference involving object InterfaceAudience
最近开发Spark应用程序,用到了scala反射,但是却一直报错循环引用 InterfaceAudience,感觉很奇怪,后来排查错因才发现,原来FileSystem类不可以作为反射的方法的参数,一旦作为参数就会报错循环引用。具体测试代码如下所示。
package myreflectimport scala.reflect.runtime.universe._
import org.apache.hadoop.fs.FileSystem
import org.apache.hadoop.security.UserGroupInformation.HadoopConfiguration
import org.apache.hadoop.conf.Configurationclass Person(name:String,age:Int){def printPerson={println(s"${name}<-//->${age}")}def myTest(hdfs:FileSystem):Unit = {println(hdfs)}
}object foo{def main(args:Array[String]):Unit ={val a = typeTag[Person]getInstance[Person](a)}def getInstance[T](t:TypeTag[T]):Unit = {val classSymbol = t.tpe.typeSymbol.asClassval mirror = runtimeMirror(getClass.getClassLoader)val classMirror = mirror.reflectClass(classSymbol)val methodConstructor = t.tpe.decl(termNames.CONSTRUCTOR).asMethodval methodMirror = classMirror.reflectConstructor(methodConstructor)val p = methodMirror("jack",12)val methodx = t.tpe.decl(TermName("printPerson")).asMethodval methody = t.tpe.decl(TermName("myTest")).asMethodval person1 = mirror.reflect(p)val methodPrint = person1.reflectMethod(methodx)methodPrint()val myTest = person1.reflectMethod(methody)myTest( FileSystem.get( new Configuration() ) )}}
它的报错异常栈为:
jack<-//->12
Exception in thread "main" scala.reflect.internal.Symbols$CyclicReference: illegal cyclic reference involving object InterfaceAudienceat scala.reflect.internal.Symbols$Symbol$$anonfun$info$3.apply(Symbols.scala:1523)at scala.reflect.internal.Symbols$Symbol$$anonfun$info$3.apply(Symbols.scala:1521)at scala.Function0$class.apply$mcV$sp(Function0.scala:34)at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12)at scala.reflect.internal.Symbols$Symbol.lock(Symbols.scala:567)at scala.reflect.internal.Symbols$Symbol.info(Symbols.scala:1521)at scala.reflect.runtime.SynchronizedSymbols$SynchronizedSymbol$$anon$2.scala$reflect$runtime$SynchronizedSymbols$SynchronizedSymbol$$super$info(SynchronizedSymbols.scala:171)at scala.reflect.runtime.SynchronizedSymbols$SynchronizedSymbol$$anonfun$info$1.apply(SynchronizedSymbols.scala:127)at scala.reflect.runtime.SynchronizedSymbols$SynchronizedSymbol$$anonfun$info$1.apply(SynchronizedSymbols.scala:127)at scala.reflect.runtime.Gil$class.gilSynchronized(Gil.scala:19)at scala.reflect.runtime.JavaUniverse.gilSynchronized(JavaUniverse.scala:16)at scala.reflect.runtime.SynchronizedSymbols$SynchronizedSymbol$class.gilSynchronizedIfNotThreadsafe(SynchronizedSymbols.scala:123)at scala.reflect.runtime.SynchronizedSymbols$SynchronizedSymbol$$anon$2.gilSynchronizedIfNotThreadsafe(SynchronizedSymbols.scala:171)at scala.reflect.runtime.SynchronizedSymbols$SynchronizedSymbol$class.info(SynchronizedSymbols.scala:127)at scala.reflect.runtime.SynchronizedSymbols$SynchronizedSymbol$$anon$2.info(SynchronizedSymbols.scala:171)at scala.reflect.runtime.JavaMirrors$JavaMirror.scala$reflect$runtime$JavaMirrors$JavaMirror$$coreLookup$1(JavaMirrors.scala:992)at scala.reflect.runtime.JavaMirrors$JavaMirror.scala$reflect$runtime$JavaMirrors$JavaMirror$$lookupClass$1(JavaMirrors.scala:998)at scala.reflect.runtime.JavaMirrors$JavaMirror.scala$reflect$runtime$JavaMirrors$JavaMirror$$classToScala1(JavaMirrors.scala:1003)at scala.reflect.runtime.JavaMirrors$JavaMirror$$anonfun$classToScala$1.apply(JavaMirrors.scala:980)at scala.reflect.runtime.JavaMirrors$JavaMirror$$anonfun$classToScala$1.apply(JavaMirrors.scala:980)at scala.reflect.runtime.JavaMirrors$JavaMirror$$anonfun$toScala$1.apply(JavaMirrors.scala:97)at scala.reflect.runtime.TwoWayCaches$TwoWayCache$$anonfun$toScala$1.apply(TwoWayCaches.scala:38)at scala.reflect.runtime.Gil$class.gilSynchronized(Gil.scala:19)at scala.reflect.runtime.JavaUniverse.gilSynchronized(JavaUniverse.scala:16)at scala.reflect.runtime.TwoWayCaches$TwoWayCache.toScala(TwoWayCaches.scala:33)at scala.reflect.runtime.JavaMirrors$JavaMirror.toScala(JavaMirrors.scala:95)at scala.reflect.runtime.JavaMirrors$JavaMirror.classToScala(JavaMirrors.scala:980)at scala.reflect.runtime.JavaMirrors$JavaMirror$JavaAnnotationProxy.<init>(JavaMirrors.scala:163)at scala.reflect.runtime.JavaMirrors$JavaMirror$JavaAnnotationProxy$.apply(JavaMirrors.scala:162)at scala.reflect.runtime.JavaMirrors$JavaMirror$JavaAnnotationProxy$.apply(JavaMirrors.scala:162)at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)at scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:33)at scala.collection.mutable.ArrayOps$ofRef.foreach(ArrayOps.scala:186)at scala.collection.TraversableLike$class.map(TraversableLike.scala:234)at scala.collection.mutable.ArrayOps$ofRef.map(ArrayOps.scala:186)at scala.reflect.runtime.JavaMirrors$JavaMirror.scala$reflect$runtime$JavaMirrors$JavaMirror$$copyAnnotations(JavaMirrors.scala:683)at scala.reflect.runtime.JavaMirrors$JavaMirror$FromJavaClassCompleter.load(JavaMirrors.scala:733)at scala.reflect.runtime.JavaMirrors$JavaMirror$FromJavaClassCompleter.complete(JavaMirrors.scala:744)at scala.reflect.internal.Symbols$Symbol.info(Symbols.scala:1535)at scala.reflect.runtime.SynchronizedSymbols$SynchronizedSymbol$$anon$2.scala$reflect$runtime$SynchronizedSymbols$SynchronizedSymbol$$super$info(SynchronizedSymbols.scala:171)at scala.reflect.runtime.SynchronizedSymbols$SynchronizedSymbol$$anonfun$info$1.apply(SynchronizedSymbols.scala:127)at scala.reflect.runtime.SynchronizedSymbols$SynchronizedSymbol$$anonfun$info$1.apply(SynchronizedSymbols.scala:127)at scala.reflect.runtime.Gil$class.gilSynchronized(Gil.scala:19)at scala.reflect.runtime.JavaUniverse.gilSynchronized(JavaUniverse.scala:16)at scala.reflect.runtime.SynchronizedSymbols$SynchronizedSymbol$class.gilSynchronizedIfNotThreadsafe(SynchronizedSymbols.scala:123)at scala.reflect.runtime.SynchronizedSymbols$SynchronizedSymbol$$anon$2.gilSynchronizedIfNotThreadsafe(SynchronizedSymbols.scala:171)at scala.reflect.runtime.SynchronizedSymbols$SynchronizedSymbol$class.info(SynchronizedSymbols.scala:127)at scala.reflect.runtime.SynchronizedSymbols$SynchronizedSymbol$$anon$2.info(SynchronizedSymbols.scala:171)at scala.reflect.runtime.JavaMirrors$JavaMirror.scala$reflect$runtime$JavaMirrors$JavaMirror$$coreLookup$1(JavaMirrors.scala:992)at scala.reflect.runtime.JavaMirrors$JavaMirror.scala$reflect$runtime$JavaMirrors$JavaMirror$$lookupClass$1(JavaMirrors.scala:998)at scala.reflect.runtime.JavaMirrors$JavaMirror.scala$reflect$runtime$JavaMirrors$JavaMirror$$classToScala1(JavaMirrors.scala:1003)at scala.reflect.runtime.JavaMirrors$JavaMirror$$anonfun$classToScala$1.apply(JavaMirrors.scala:980)at scala.reflect.runtime.JavaMirrors$JavaMirror$$anonfun$classToScala$1.apply(JavaMirrors.scala:980)at scala.reflect.runtime.JavaMirrors$JavaMirror$$anonfun$toScala$1.apply(JavaMirrors.scala:97)at scala.reflect.runtime.TwoWayCaches$TwoWayCache$$anonfun$toScala$1.apply(TwoWayCaches.scala:38)at scala.reflect.runtime.Gil$class.gilSynchronized(Gil.scala:19)at scala.reflect.runtime.JavaUniverse.gilSynchronized(JavaUniverse.scala:16)at scala.reflect.runtime.TwoWayCaches$TwoWayCache.toScala(TwoWayCaches.scala:33)at scala.reflect.runtime.JavaMirrors$JavaMirror.toScala(JavaMirrors.scala:95)at scala.reflect.runtime.JavaMirrors$JavaMirror.classToScala(JavaMirrors.scala:980)at scala.reflect.runtime.JavaMirrors$JavaMirror$JavaAnnotationProxy.<init>(JavaMirrors.scala:163)at scala.reflect.runtime.JavaMirrors$JavaMirror$JavaAnnotationProxy$.apply(JavaMirrors.scala:162)at scala.reflect.runtime.JavaMirrors$JavaMirror$JavaAnnotationProxy$.apply(JavaMirrors.scala:162)at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)at scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:33)at scala.collection.mutable.ArrayOps$ofRef.foreach(ArrayOps.scala:186)at scala.collection.TraversableLike$class.map(TraversableLike.scala:234)at scala.collection.mutable.ArrayOps$ofRef.map(ArrayOps.scala:186)at scala.reflect.runtime.JavaMirrors$JavaMirror.scala$reflect$runtime$JavaMirrors$JavaMirror$$copyAnnotations(JavaMirrors.scala:683)at scala.reflect.runtime.JavaMirrors$JavaMirror$FromJavaClassCompleter.load(JavaMirrors.scala:733)at scala.reflect.runtime.JavaMirrors$JavaMirror$FromJavaClassCompleter.complete(JavaMirrors.scala:744)at scala.reflect.internal.Symbols$Symbol.info(Symbols.scala:1535)at scala.reflect.runtime.SynchronizedSymbols$SynchronizedSymbol$$anon$8.scala$reflect$runtime$SynchronizedSymbols$SynchronizedSymbol$$super$info(SynchronizedSymbols.scala:168)at scala.reflect.runtime.SynchronizedSymbols$SynchronizedSymbol$$anonfun$info$1.apply(SynchronizedSymbols.scala:127)at scala.reflect.runtime.SynchronizedSymbols$SynchronizedSymbol$$anonfun$info$1.apply(SynchronizedSymbols.scala:127)at scala.reflect.runtime.Gil$class.gilSynchronized(Gil.scala:19)at scala.reflect.runtime.JavaUniverse.gilSynchronized(JavaUniverse.scala:16)at scala.reflect.runtime.SynchronizedSymbols$SynchronizedSymbol$class.gilSynchronizedIfNotThreadsafe(SynchronizedSymbols.scala:123)at scala.reflect.runtime.SynchronizedSymbols$SynchronizedSymbol$$anon$8.gilSynchronizedIfNotThreadsafe(SynchronizedSymbols.scala:168)at scala.reflect.runtime.SynchronizedSymbols$SynchronizedSymbol$class.info(SynchronizedSymbols.scala:127)at scala.reflect.runtime.SynchronizedSymbols$SynchronizedSymbol$$anon$8.info(SynchronizedSymbols.scala:168)at scala.reflect.internal.Symbols$Symbol.initialize(Symbols.scala:1680)at scala.reflect.internal.Symbols$Symbol.hasFlag(Symbols.scala:735)at scala.reflect.internal.Symbols$Symbol.hasFlag(Symbols.scala:738)at scala.reflect.internal.Symbols$Symbol.isDerivedValueClass(Symbols.scala:823)at scala.reflect.runtime.JavaMirrors$JavaMirror.scala$reflect$runtime$JavaMirrors$JavaMirror$$isValueClassParam(JavaMirrors.scala:308)at scala.reflect.runtime.JavaMirrors$JavaMirror$$anonfun$scala$reflect$runtime$JavaMirrors$JavaMirror$$mkMethodMirror$2.apply(JavaMirrors.scala:317)at scala.reflect.runtime.JavaMirrors$JavaMirror$$anonfun$scala$reflect$runtime$JavaMirrors$JavaMirror$$mkMethodMirror$2.apply(JavaMirrors.scala:317)at scala.collection.LinearSeqOptimized$class.exists(LinearSeqOptimized.scala:93)at scala.collection.immutable.List.exists(List.scala:84)at scala.reflect.runtime.JavaMirrors$JavaMirror.existsParam$1(JavaMirrors.scala:315)at scala.reflect.runtime.JavaMirrors$JavaMirror.scala$reflect$runtime$JavaMirrors$JavaMirror$$mkMethodMirror(JavaMirrors.scala:317)at scala.reflect.runtime.JavaMirrors$JavaMirror$JavaInstanceMirror.reflectMethod(JavaMirrors.scala:248)at scala.reflect.runtime.JavaMirrors$JavaMirror$JavaInstanceMirror.reflectMethod(JavaMirrors.scala:233)at myreflect.foo$.getInstance(foo.scala:40)at myreflect.foo$.main(foo.scala:21)at myreflect.foo.main(foo.scala)
可以看到第一行输出了,说明我写的 反射是没有错误的,仅仅是仅为把FileSystem作为了参数才开始报错的。
解决方法,我最后采用了 传参的时候传来sc:SparkContext作为参数,这样的话可以使用FileSystem.get(sc.hadoopConfiguration)方法获取FileSystem。算是绕路而行吧。
illegal cyclic reference involving object InterfaceAudience相关推荐
- 【scala使用spark报错】illegal cyclic inheritance involving trait Iterable val df = Seq(
报错信息 illegal cyclic inheritance involving trait Iterable val df = Seq( 原因 scala和spark版本不相符 笔者报错版本 sp ...
- illegal cyclic inheritance involving trait Iterable val wordRDD: RDD[String] = fileRDD.flatMap(
illegal cyclic inheritance involving trait Iterable val wordRDD: RDD[String] = fileRDD.flatMap( _.sp ...
- idea运行spark程序报错scalac: Error: illegal cyclic inheritance involving trait Iterable
执行一个spark的scala写的类,报错 scalac: Error: illegal cyclic inheritance involving trait Iterable scala.refle ...
- scala illegal cyclic inheritance involving trait Iterable val data= input.flatMap(_.split(“ “))
最近在搭建flink 项目的时候 ,出现上述问题试了很多方式,已经决.在此记录下. 在项目上右键 选择 open module settings ,进行如下操作即可. 问题解决,看下效果.
- scala illegal cyclic inheritance involving trait iterable
最近在学习spark的时候,编译Scala很简单的程序都会遇到这个问题,甚至能在命令行运行得好好地程序 ,拿到idea里面报了一对错,通过我在网上找,然后翻墙去谷歌,发现这其实是Scala自身的bug ...
- 【Android】错误Cyclic inheritance involving(循环继承问题)
编译工程时,遇到"Cyclic inheritance involving",翻译过来就是, 实际代码: package itbird.com.myapplication33;im ...
- Java 异常java.lang.IllegalArgumentException: Illegal group reference
Java 异常java.lang.IllegalArgumentException: Illegal group reference 参考文章: (1)Java 异常java.lang.Illegal ...
- The projects in the reactor contain a cyclic reference
图中模块C依赖于模块B,模块B依赖于模块A,而模块A又依赖于模块C,这样就出现了相互依赖情况,如果运行mvn comp ...
- 不错的 Illegal group reference解决方法
解决:java.lang.IllegalArgumentException: Illegal group reference 当使用String中的replaceAll方法时,如果替换的值中包含有$符 ...
最新文章
- Python之pandas:pandas中缺失值与空值处理的简介及常用函数(drop()、dropna()、isna()、isnull()、fillna())函数详解之详细攻略
- Python 保存数组至.mat文件,报错:AttributeError: 'numpy.ndarray' object has no attribute 'items'
- tensorflow基本概念
- VIPKID 张武锋:自研RTC的故事
- python编译成exe有意义吗_python工程编译成EXE
- vim grep配置及使用
- 禁止访问 共享计算机,win7如何禁止局域网用户访问电脑
- 安装Vistual Studio 2005的小问题
- OpenCV3.4.3DNN 模块中sample-colorization、Easy-textdetector、openpose
- 解决 jQuery 实现填充父窗口iframe里元素的值的问题 如window.parent.document.getElementById().innerHTML...
- 虚拟机的管理(libvirtd)、移植和快照
- 21天jenkins打卡Day2-安装Jenkins
- 第一课----色彩构成与色彩模式
- 【期权机理与python实践】
- GSM网络的网络架构,速来了解一下吧!
- Navcat无法连接mysql报错1449
- js + jquery 两栏Tab鼠标移入显示/隐藏的效果(详)
- js实现学生信息表案例--详细教程
- 职场表达,你不能没有的套路——SCQA架构
- 计算机一级电子表格求和,Excel表格如何进行单个求和以及批量求和操作-电脑自学网...
热门文章
- .for 与.fori区别
- 数据大屏项目Vue+DataV+Echarts(附源码)
- Android之Canvas画画板
- 【JS】Number
- C# 实现手写输入功能
- 数字化转型:如何打造AI工程架构体系
- QT 生成.so动态库默认生成.so .so.1 .so.1.0 .so.1.0.0
- dss_linkis(dataspherestudio-1.1.1、linkis-1.1.1)拓展工具安装——数据交换工具Exchangis
- spring boot 整合redis
- proc printto