概要
Javaの実行環境で同一のクラスが他のJARファイルにあるとどの様な挙動をするのかを確認してみます。環境
検証
まずは同じクラスファイルを含むjarファイルtest1.jarとtest2.jarを作成します。各jarに入るクラスファイルはほぼ同一でreturnする値が異なるだけとなっています。ここではjarを生成する方法は割愛しますが、それぞれのクラスファイルを含むjarファイルを生成します。test1.jarに入れるクラスファイルのソース
test2.jarに入れるクラスファイルのソース
package com.chirokings;
public class Test {
public int testMethod(){
return 1;
}
}
次にjarに含まれているTestクラスを使用するクラスを作成します。
package com.chirokings;
public class Test {
public int testMethod(){
return 2;
}
}
Testクラスを使用するクラス
クラスパスの指定の仕方で2通りの結果になります。同じクラスが複数あっても特にエラーとはならずに実行できることが確認できます。
package com.chirokings;
public class TestRun {
public static void main(String[] args) {
Test t = new Test();
System.out.println(t.testMethod());
}
}
W:\bin>java -classpath .;..\test1.jar;..\test2.jar com.chirokings.TestRun
1
W:\bin>java -classpath .;..\test2.jar;..\test1.jar com.chirokings.TestRun
2