Вы можете вызвать метод main любого класса напрямую. Например, если у вас есть класс Server и Client и вы хотите запустить один сервер и два клиента, вот что вы можете сделать.
public class Server {
public void main(final String ... $Args) {
final Server S = new Server();
S.config($Args);
S.run();
}
}
public class Client {
public void main(final String ... $Args) {
final Client C = new Client();
C.config($Args);
C.run();
}
}
public class Test_ServerClient {
public void main(final String ... $Args) {
Server.main('server1.cfg');
Client.main('client1.cfg');
Client.main('client2.cfg');
}
}
Готово! * * 1004
Ну, почти. Возможно, вы захотите сделать некоторую задержку перед вызовом основного клиента, чтобы убедиться, что сервер работает и работает правильно.
Можно подумать, хотя. Все Сервер и Клиенты будут работать на одной JVM. В большинстве случаев (если вы просто хотите проверить его взаимодействие и не иметь ничего общего с загрузкой классов, поскольку это будет вести себя по-разному, когда они находятся / не находятся на одной и той же JVM), это должно быть хорошо. Если вы действительно хотите, чтобы он работал на другой JVM, вместо этого вы можете использовать Ant.
Примерно так:
<project name="TestServerClient" default="test" basedir=".">
<target name="test">
<java classname="my.Server">
<arg value="server1.cfg"/>
<classpath>
<pathelement location="dist/test.jar"/>
<pathelement path="${java.class.path}"/>
</classpath>
</java>
<java classname="my.Client">
<arg value="client1.cfg"/>
<classpath>
<pathelement location="dist/test.jar"/>
<pathelement path="${java.class.path}"/>
</classpath>
</java>
<java classname="my.Client">
<arg value="client2.cfg"/>
<classpath>
<pathelement location="dist/test.jar"/>
<pathelement path="${java.class.path}"/>
</classpath>
</java>
</target>
</project>
Так что вы можете просто запустить этого муравья и все.
Надеюсь, это поможет.