別の Java コマンドを使用して Java プログラムを起動するのと同じように、別の Java プログラムから Java プログラムを起動することはできますか? main()
プログラムのメソッドを別のプログラムから直接呼び出す場合、 Java コンテキストはこれら両方の実行に共通です。スレッドごとに 1 つのJava コンテキストを使用しようとしています。
図:
src/com/project/ProjectLauncher.java
public class ProjectLauncher {
static {
PropertyConfigurator.configure("log4j.properties");
}
public static void main(String[] args) {
Logger.getLogger(ProjectLauncher.class).info("started!");
// Logs well as expected.
}
}
test/com/project/TestProject.java
public class TestProject extends TestCase {
public void testProject() {
ProjectLauncher.main(null);
Logger.getLogger(TestProject.class).info("tested!");
// The above line logs well, while log4j has been initialized in ProjectLauncher.
// I would like it to need its own initialization in this class.
}
}
別のスレッド/ランナブルでメソッドを起動しようとしましたmain
が、ロガーはまだ ProjectLauncher によって初期化されています。