È possibile chiamare direttamente il metodo principale di qualsiasi classe. Ad esempio, se si dispone della classe Server e Client e si desidera eseguire un server e due client, ecco cosa si può fare.
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');
}
}
Fatto!
Bene, quasi. Potresti fare qualche ritardo prima di chiamare il principale del client solo per assicurarti che il server sia attivo e funzionante correttamente.
Uno pensa però. Tutti i server e i client verranno eseguiti sulla stessa JVM. Nella maggior parte dei casi (che vuoi solo testare la sua interazione e non avere nulla a che fare con il caricamento di classe in quanto si comportano diversamente quando sono/non sono sulla stessa JVM), dovrebbe andare bene. Se vuoi veramente o eseguirlo su JVM differenti, puoi usare Ant per eseguirli.
Qualcosa di simile a questo:
<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>
Quindi, si può semplicemente eseguire questa formica e che è.
Spero che questo aiuti.
Vedere questa domanda: http://stackoverflow.com/questions/316761/how-to-launch-multiple-java-programs-with-one-configuration-on-separate-consoles – JesperE
Per riassumere tutte le risposte finora: Eclipse non può farlo, avrai bisogno di un altro strumento o di qualche soluzione hacker. – lvella
C'è in realtà un ticket aperto sul sito Eclipse che richiede questa stessa funzionalità. Uno dei partecipanti ha proposto un plug-in che consente di raggruppare più configurazioni di avvio e avviarle tutte contemporaneamente. Sebbene la sua funzionalità sia limitata, fa un ottimo lavoro. Il codice sorgente è incluso in modo da poter apportare le modifiche necessarie. Disponibile qui: https://bugs.eclipse.org/bugs/show_bug.cgi?id=39900#attach_177951 –