Scala中调用java反射异常记录

1.Exception in thread "main" java.lang.InstantiationError: com.feng.Column
    at com.feng.SparkSteamingTwo$$anonfun$getInsertSql$2.apply(SparkSteamingTwo.scala:126)
    at com.feng.SparkSteamingTwo$$anonfun$getInsertSql$2.apply(SparkSteamingTwo.scala:124)
    at scala.collection.TraversableLike$WithFilter$$anonfun$foreach$1.apply(TraversableLike.scala:733)
    at scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:33)
    at scala.collection.mutable.ArrayOps$ofRef.foreach(ArrayOps.scala:186)
    at scala.collection.TraversableLike$WithFilter.foreach(TraversableLike.scala:732)
    at com.feng.SparkSteamingTwo$.getInsertSql(SparkSteamingTwo.scala:124)
    at com.feng.SparkSteamingTwo$.<init>(SparkSteamingTwo.scala:33)
    at com.feng.SparkSteamingTwo$.<clinit>(SparkSteamingTwo.scala)
    at com.feng.SparkSteamingTwo.main(SparkSteamingTwo.scala)

原因:因为Column是java中定义的一个Annotation的java 接口,而java接口是不能进行实例化的。最开始的代码

var cl=new Column()

val columns:Column[]=field.getAnnotationByType(cl.getClass)

修改代码:

field.getAnnotationsByType(classOf[Column])

发生此问题的原因在于自己对java代码转scala代码很多地方不了解

猜你喜欢

转载自blog.csdn.net/fengfengchen95/article/details/84749384