Чтобы начать новую JVM вы бы начать внешний java
процесс так же, как и любой другой команды OS , посмотрите документацию по ProcessBuilder
ProcessBuilder pb = new ProcessBuilder("java", "-classpath", "B.jar", "B.BMain");
Process p = pb.start();
Есть много предостережений для запуска внешнего процесса в Java, вы найдете много материала здесь на SO поиска Process
и ProcessBuilder
jar
файлы не запускаются и не завершаются; то есть jvm
, начатый, например, командой java
. Например, при выполнении следующей команды:
java -classpath A.jar A.Main
Новый jvm
запускается и выполняет main
метод класса A.Main
Теперь, когда метод Main.main()
, может вызова методов классов в B.jar
, если это было в classpath. Например, если команда была
java -classpath A.jar;B.jar pkg.A
Тогда в A.Main.main
может быть
B.SomeClass.SomeMethod()
Где B
находится в B.jar
Это то, что вы имеете в виду, когда вы говорите «открытой b.jar»? Обратите внимание, что это не «закрывает» другой «A.jar», что бы это ни значило.
От * "закрыть оригинальную Jar?" * ITYM закрыть JVM работает с Jar. Но я предпочитаю стратегию «classpath» @ gd1. –