jarファイルの作り方

parentディレクトリから見て .. をパッケージのルートとして

[hirasawa@ubuntu1204-20 parent]$ pwd
/home/hirasawa/step0/jar_test/parent

まずは親をつくってみる

[hirasawa@ubuntu1204-20 parent]$ cat Parent.java 
package parent;
import parent.child.*;

public class Parent {
 public static void main(String[] args) {
 Child child = new Child();
 child.exec();
 }
}
[hirasawa@ubuntu1204-20 parent]$ 

続いて子をつくってみる

[hirasawa@ubuntu1204-20 parent]$ cat ./child/Child.java 
package parent.child;

public class Child {

 public void exec() {
  System.out.println("Go"); 
 }
}
[hirasawa@ubuntu1204-20 parent]$ 

ここまでで準備は完了。

コンパイルして、実行してみる

[hirasawa@ubuntu1204-20 parent]$ javac  -classpath .. Parent.java 
[hirasawa@ubuntu1204-20 parent]$ java -classpath .. parent.Parent 
Go
[hirasawa@ubuntu1204-20 parent]$ 

よしよし。

それではjarファイルをつくってみるよ

[hirasawa@ubuntu1204-20 jar_test]$ pwd
/home/hirasawa/step0/jar_test
[hirasawa@ubuntu1204-20 jar_test]$ ls -ltr | grep parent
drwxrwxr-x 3 hirasawa hirasawa 4096  1月  3 13:02 parent
[hirasawa@ubuntu1204-20 jar_test]$ 
[hirasawa@ubuntu1204-20 jar_test]$ 
[hirasawa@ubuntu1204-20 jar_test]$ 
[hirasawa@ubuntu1204-20 jar_test]$ jar cvf parent.jar parent/
マニフェストが追加されました
parent/を追加中です(入=0)(出=0)(0%格納されました)
parent/Parent.javaを追加中です(入=152)(出=118)(22%収縮されました)
parent/Parent.classを追加中です(入=330)(出=247)(25%収縮されました)
parent/child/を追加中です(入=0)(出=0)(0%格納されました)
parent/child/Child.classを追加中です(入=394)(出=281)(28%収縮されました)
parent/child/Child.javaを追加中です(入=101)(出=92)(8%収縮されました)
[hirasawa@ubuntu1204-20 jar_test]$ ls -ltr | grep jar
-rw-rw-r-- 1 hirasawa hirasawa 1807  1月  3 13:15 parent.jar
[hirasawa@ubuntu1204-20 jar_test]$ jar tvf parent.jar 
     0 Fri Jan 03 13:15:08 JST 2014 META-INF/
    68 Fri Jan 03 13:15:08 JST 2014 META-INF/MANIFEST.MF
     0 Fri Jan 03 13:02:14 JST 2014 parent/
   152 Fri Jan 03 12:59:04 JST 2014 parent/Parent.java
   330 Fri Jan 03 13:12:44 JST 2014 parent/Parent.class
     0 Fri Jan 03 13:02:22 JST 2014 parent/child/
   394 Fri Jan 03 13:02:26 JST 2014 parent/child/Child.class
   101 Fri Jan 03 13:02:22 JST 2014 parent/child/Child.java
[hirasawa@ubuntu1204-20 jar_test]$ 

jarファイルを実行するには

java -cp parent.jar parent.Parent

ちなみは -cpは-classpathのことですね

参考
http://www.ytp.ne.jp/tech/java/sineruka/jarhowto.html

http://homepage1.nifty.com/algafield/java-programming-primer.html