执行jar包报错:udfFull.jar中没有主清单属性
在windows系统的cmd命令行窗口中执行: java -jar udfFull.jar {"movie":"1287","rate":"5","timeStamp":"978302039","uid":"1"}
报错1:udfFull.jar中没有主清单属性
原因:jar包中的META-INF文件夹下的MANIFEST.MF文件缺少定义jar接口类。
说白了就是没有指定class类。这里说明一下MANIFEST.MF就是一个清单文件,通俗点将就相当于WINDOWS中ini配置文件。用来配置程序的一些信息。
解决方法:在MANIFEST.MF文件中添加一个入口类,添加这一行:Main-Class: TransferJsonUDF (TransferJsonUDF是含有main方法的入口类)
继续执行,报另一个错误:找不到或无法加载主类 TransferJsonUDF
原因:入口类配置得不对。
解决方法:入口类配置修改为: Main-Class: cn.develop.hive.udf.TransferJsonUDF (即在入口类前面添加其类路径 cn.develop.hive.udf.)
再次运行,成功:
D:\bigdata\ >java -jar udfFull.jar {"movie":"1287","rate":"5","timeStamp":"978302039","uid":"1"}
1287 5 978302039 1
另外,linux中执行该命令,如果后面带参数,则需要在参数两边加上单引号''. 否则执行可能有异常,可以这么写:
java -jar udfFull.jar '{"movie":"914","rate":"3","timeStamp":"978301968","uid":"1"}'