今天突然心血来潮,想把我的“Hallo World”程序打包成Jar文件。先贴一下代码:
package com.example; public class Main { public static void main(String[] args) { System.out.println("Hello World!"); } }
先编译(假设你有JDK,没有的话安装,安装方法:http://blog.zicode.com/?p=35):
javac Main.java
这时,你的Class文件就出来了。运行:
java Main.class
输出:
Hello World!
这时,我们要开始我们今天的主题了。首先,我们运行:
jar -cvf Main.jar Main.class
运行:
java -jar Main.jar
报错:找不到或无法加载主类。怎么办?上网Google!找到了解决办法:Jar包中的META-INF里的MANIFEST.MF文件有问题。下面给出解决办法:
mkdir unpress cp Main.jar unpress/ cd unpress/ jar -xf Main.jar cd META-INF/ vim MANIFEST.MF
在文件的最后,加上
Main-Class: Main
记住,最后一定要留个空行。
jar -cMf Main.jar .
把Main.jar移到上层目录去,最后把unpress目录删掉。这时,又报错:找不到或无法加载主类: Main。再次Google,发现是包惹的祸。重来一遍,把MANIFEST.MF里的“Main-Class: Main”改成“Main-Class: com/example/Main”。
这时,又报错:找不到或无法加载主类: com/example/Main,彻底崩溃了。得知,又是包惹的祸,索性把Main.jar删了,重新来过。
pwd #输出:你的目录/ ls #输出: #com/ ls com/ #输出: #example/ jar -cvf Main.jar com/example/Main.class mkdir unpress cp Main.jar unpress/ cd unpress/ jar -xf Main.jar cd META-INF/ vim MANIFEST.MF
添加:
Main-Class: com/example/Main
继续:
jar -cMf Main.jar .
把Main.jar移到上层目录去,并把unpress目录删掉。
这回终于成功了。