あなたのやりたいことができるとは思えません。すべて「src.tool.Tools」と呼ばれる 3 つのクラスがある場合、Java はどの jar ファイルからそれらをロードしたかを気にしません。3 つのプロジェクト (jar ファイルを意味すると仮定) がすべて同じクラスを持つ場合、Java が衝突し、どのツールが読み込まれるかを予測できなくなります。
正しいものが呼び出されることを確認する唯一の方法は、他の 2 つがクラスパスにないことを確認することです。
あなたの問題に対するハックソリューションがあります。プロジェクトごとに新しい ClassLoader を作成し、Tools クラスの目的のプロジェクトを ClassLoader に要求できます。次に、リフレクションを使用してインスタンス化し、メソッドを呼び出すことができます。各プロジェクトは独自の ClassLoader にあるため、3 つの Tools クラスが衝突することはもうありません。
元:
URLClassLoader a = new URLClassLoader(aJar.toURL(), getClass().getClassLoader());
Class toolsClass = Class.forName("src.tool.Tools", true, a);
Method m = toolsClass.getDeclaredMethod("tool");
Object i = toolsClass.newInstance();
Object result = m.invoke(instance);
(URLClassLoader の例は、How should I load Jars dynamic at runtime?から取得しました)