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代码很多地方不了解