结论:
1,在Create JAR from Modules页面中,最简单的方式为Main Class为空,选择extract to the target JAR。
这样不会指定主类,不会生成MANIFEST.MF文件。
2,Main Class会在jar包内的MANIFEST.MF中指定主类,执行jar包时不可以另外指定主类
3,选项extract to the target JAR(提取到目标JAR)不会在MANIFEST.MF文件中链接依赖的jar包(整包)。
选项copy to the output directory and link via manifest(复制到输出目录和清单链接)会将依赖的一个jar包放在目录中,在MANIFEST.MF文件中以链接的形式引用jar包(散包)。
Create JAR from Modules页面
一
NO Main Class
extract to the target JAR
hadoop jar WordCount.jar WordCount input/demo/word.txt output 成功
二
Main Class
extract to the target JAR
hadoop jar WordCount.jar input/demo/word.txt output 成功
三
NO Main Class
copy to the output directory and link via manifest
失败 Exception in thread "main" java.lang.ClassNotFoundException: at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:348) at org.apache.hadoop.util.RunJar.run(RunJar.java:214) at org.apache.hadoop.util.RunJar.main(RunJar.java:136) hadoop jar WordCount.jar WordCount input/demo/word.txt output 删除MANIFEST.MF文件成功
四
Main Class
copy to the output directory and link via manifest
hadoop jar WordCount.jar input/demo/word.txt output 成功