Exception in thread “main“ java.lang.IllegalArgumentException: Cannot format given Object as a Date
阿新 • • 發佈:2020-12-28
Exception in thread “main” java.lang.IllegalArgumentException: Cannot format given Object as a Date
執行下面程式碼出現上面這個錯誤:
package hive; import java.text.SimpleDateFormat; import org.apache.hadoop.hive.metastore.api.Date; import org.apache.hadoop.hive.ql.exec.UDF; public class myprint extends UDF { public String evaluate1() { SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); return df.format(new Date()); } //主方法測試一下是否可以輸出,程式碼是否有問題 public static void main (String[] args) { myprint sm=new myprint(); System.out.println(sm.evaluate1()); } }
我反覆找原因,找到了下面這個原因:
把import org.apache.hadoop.hive.metastore.api.Date;去掉
改成:import java.util.Date;通用的這個就不會報錯了
程式碼如下:
package hive; import java.text.SimpleDateFormat; import org.apache.hadoop.hive.ql.exec.UDF; import java.text.SimpleDateFormat; public class myprint extends UDF { public String evaluate1() { SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); return df.format(new Date()); } //主方法測試一下是否可以輸出,程式碼是否有問題 public static void main (String[] args) { myprint sm=new myprint(); System.out.println(sm.evaluate1()); } }
也可以用下面這個獲取系統的當前時間:
package hive; import java.text.SimpleDateFormat; import org.apache.hadoop.hive.metastore.api.Date; import org.apache.hadoop.hive.ql.exec.UDF; public class hivedate extends UDF{ public Date evaluate1() { SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //return df.format(new Date()); return null ; }
這個就不要用到這個了,可以到系統給的包
import java.util.Date;
問題解決了,不過上面是我解決問題的方法,和大家的不一樣,大家可以認真思考,找到自己問題所在。