BlueJ 5+ Extensions

BlueJ offers an extension API that allows third parties to develop extensions to the environment. Extensions offer additional functionality not included in the core system.

Note! In BlueJ 5.0.0 the extensions mechanism was changed. It no longer relies on the Java Swing framework for the extensions (see the relevant Jira issue), but uses JavaFX instead. Extensions that had been written for previous versions of BlueJ (4 and earlier) will not work until they are recompiled for the new extensions API. A guideline for the changes required is available in the Guide to Writing Extensions for BlueJ.

Installing extensions

Extensions are installed by placing the extension jar file into an extension directory. BlueJ has three separate locations for extensions, each giving the extension a different scope. The locations are:

Location Availability
<BLUEJ_HOME>/lib/extensions2 (Unix), or <BLUEJ_HOME>\lib\extensions2 (Windows), or <BLUEJ_HOME>/ (Mac, Control-click and choose Show Package Contents) For all users of this system in all projects.
<USER_HOME>/.bluej/extensions2 (Unix), or <USER_HOME>\bluej\extensions2 (Windows), or <USER_HOME>/Library/Preferences/org.bluej/extensions2 (Mac) For a single user for all projects.
<BLUEJ_PROJECT>/extensions2 For this project only.

Writing extensions

To find out how to write your own extensions, read the Guide to Writing Extensions for BlueJ. You will also need the BlueJ Extension API documentation. To share an extension you have written, contact us via the BlueJ Technical Support form and tell us about it!

Available extensions for BlueJ 5 and later


The submitter extension allows for easy submission of BlueJ projects to another server or via email. Documentation is available on how to use the extension.

Author: BlueJ Team
Submitter is included with BlueJ
Main Program Runner

An extension to allow direct invocation of a main method. If a class contains a properly declared main method, this extensions adds a menu item "Run Main Method" which directly invokes it. This makes the main method much more obvious, if that suits your style, and also helps you get the declaration right; if it's not public static void main(String [] args) you won't see the menu item.

Author: BlueJ Team