Java命令行下Jar包打包
参考文章《Java命令行下Jar包打包小结》第二种打包方式
1、 先创建目录:F:CSDNBlobjar打包exam2
2、 在这个目录下创建文件test1.java、test2.java、Main.java,其内容就是上面文章内的内容
3、 在当前目录编译:javac -d . test1.java test2.java Main.java
4、 在当前目录创建MANIFEST.MF文件,内容:
Manifest-Version: 1.0
Created-By: 1.8.0_101 (Oracle Corporation)
Main-Class: cn.mymain.Main
注意:文件要4行,最后一行是空行
5、 打包:jar cvfm test.jar MANIFEST.MF -C cn/ .
6、 执行:java -jar test.jar 1 2 3
这个时候显示:错误: 找不到或无法加载主类 cn.mymain.Main
7、 解包jar后发现少了个cn目录,因此修改打包的命令为:jar cvfm Test.jar MANIFEST.MF cn*
8、 验证执行:java -jar test.jar 1 2 3
显示:
args:1
args:2
args:3
this is class test1
this is class test2
总算成功了,看起来错误出现在第五步,我们做个脚本一次性打包(只能在linux下运行),完成3-8的功能:
文件名do.sh,内容如下:
cat > MANIFEST.MF << END_TEXT
Manifest-Version: 1.0
Created-By: 1.8.0_101 (Oracle Corporation)
Main-Class: cn.mymain.Main
END_TEXT
echo "javac -d . test1.java test2.java Main.java"
output1=`javac -d . test1.java test2.java Main.java`
echo $output1
echo "jar cvfm test.jar MANIFEST.MF cn/*"
output2=`jar cvfm test.jar MANIFEST.MF cn/*`
echo $output2
echo "java -jar test.jar 1 2 3"
output3=`java -jar test.jar 1 2 3`
echo $output3
使用的时候执行:sh do.sh
如果执行的时候是指定java的类执行,就不需要编写MANIFEST.MF文件,因此shell脚本可以简化为:
echo "javac -d . test1.java test2.javaMain.java"
javac -d . test1.java test2.java Main.java
echo "jar cvf test.jar cn/*"
jar cvf test.jar cn/*
echo "java -cp . cn.mymain.Main 1 23"
java -cp . cn.mymain.Main 1 2 3
这个脚本改名为do.bat,在window下就也可以运行了