执行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.itcast.hive.udf.TransferJsonUDF (即在入口类前面添加其类路径 cn.itcast.hive.udf.)

再次运行,成功:

D:StudyBigDataheima>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"}'

原文地址:https://www.cnblogs.com/mediocreWorld/p/11067057.html