Build a custom GUI runner

Since version 0.8.0, MATSim comes with a simple GUI that starts upon double-clicking the matsim.jar file. The GUI requests a config file, and then lets users run a simulation by starting with the specified config file as argument. Contribs are able to re-use the GUI infrastructure to provide a version of the GUI that starts their own, specialized Controler.

How to create a GUI that runs a special class

Prepare your main class that should be started to run your simulation:

public class MySuperSimulation {
  public static void main(String[] args) {
    String configFilename = args[0];
    Controler controler = new Controler();
    // setup controler or do other custom stuff;

Create a new class, acting as the main class when double-clicking the jar-file. This class essentially only runs one command to start the GUI and specifies which main class should be started by the GUI:

public class MySuperSimulationGUI {
  public static void main(String[] args) {"MATSim: My Super Simulation", MySuperSimulation.class);

Modify the pom.xml in your contrib to include the following settings. Make sure to specify the correct class name for your GUI class.


And then, build a release. First, make sure that all required dependencies (including MATSim-core) are maven-installed, e.g. do mvn install -DskipTests=true for all required dependencies. Then change to the directory of your project, e.g. cd /path/to/matsim/contribs/mySuperContrib/. Perform a Maven clean (mvn clean) first, followed by mvn -Prelease -DskipTests=true. This will result in a zip file in the target-directory which includes the clickable jar-file.