This projects exemplifies the development of Eclipse 4 RCP Application with bndtools. It enables
- local development with Eclipse IDE and bndtools
- continuous building and ProofOfPerformance (pop) with GitHub actions
- running inside Debian based Docker container with web browser accessible UI
Multiple minimalistic Eclipse RCP project types are demonstrated
- headless application - targeted for terminal usage
- Eclipse SWT dialog UI
- Eclipse 4 RCP Product with SWT UI application
See the project for more information on using, building and more!
Prerequisites:
| Tool | Version | Notes |
|---|---|---|
| Java JDK | 21 | Any distribution, e.g. Eclipse Temurin. Must be on PATH or JAVA_HOME set. |
| Gradle | wrapper | ./gradlew / gradlew.bat included — no separate install required. |
| bnd CLI | 7.3.0 | biz.aQute.bnd-7.3.0.jar is committed to the workspace root — no download needed. If you need to refresh it, download from Maven Central or GitHub Releases. |
| Graphical display | — | Required for the SWTBot test suite (Windows desktop or X11 on Linux). |
# Build all bundles
./gradlew build
# Export platform-specific products
./gradlew export.app.ui_linux.gtk.x86-64
./gradlew export.app.ui_win32.win32.x86-64
./gradlew export.app.ui_macosx.cocoa.x86-64
./gradlew export.app.ui_macosx.cocoa.aarch64
# Export all three application types for Linux (used by CI/Docker)
./gradlew export.app.ui_linux.gtk.x86-64 \
export.12_equinoxapp_linux.gtk.x86-64 \
export.ui_linux.gtk.x86-64After the export Gradle task completes, launch the product directly:
# Linux — Eclipse 4 RCP product
./example.rcp.app.ui/_export/linux.gtk.x86-64/eclipse
# Linux — Headless Equinox application
./example.rcp.headless/_export/linux.gtk.x86-64/eclipse
# Linux — SWT dialog application
./example.rcp.ui/_export/linux.gtk.x86-64/eclipseOn Windows, replace eclipse with eclipse.exe and the path token linux.gtk.x86-64 with win32.win32.x86-64.
The SWTBot test suite launches the full Eclipse 4 RCP application in-process and exercises it through the SWTBot API.
# Windows — from the workspace root
java -jar biz.aQute.bnd-7.3.0.jar runtests \
example.rcp.app.ui.swtbot.tests/swtbot_win32.win32.x86-64.bndrun
# Linux / macOS — substitute the matching .bndrun when available
java -jar biz.aQute.bnd-7.3.0.jar runtests \
example.rcp.app.ui.swtbot.tests/swtbot_*.bndrunNote: Use
bnd runtests, notbnd testorbnd run.
bnd testsilently skips.bndrunfiles (only processesbnd.bndproject files);
bnd rundoes not inject the-testerbundle.
Outputs after a successful run:
| Path | Contents |
|---|---|
reports/TEST-*.xml |
JUnit XML report (parsed by CI / IDEs) |
reports/TEST-*.html |
Human-readable HTML summary |
reports/summary.xml |
Run-level summary with duration |
example.rcp.app.ui.swtbot.tests/screenshots/ |
PNG screenshots captured at key test steps |
Screenshot filenames:
| File | Captured at |
|---|---|
01_main_window_open.png |
After the main application shell becomes active |
02_table_verified.png |
After the Sample Part table row-count assertion passes |
03_before_quit.png |
Immediately before the File → Quit sequence |
Screenshots persist across osgi.clean=true restarts because they are written outside the bnd-managed _rt/ directory (resolved from the bundle jar location: <project>/screenshots/).
Try it out (local Docker installation required)
# Build from source (exports all three Linux application types internally)
docker build -t klibio/example.bnd.rcp .# bash
docker container run -d \
-p 5800:5800/tcp \
klibio/example.bnd.rcp# PowerShell
docker container run -d `
-p 5800:5800/tcp `
klibio/example.bnd.rcpAccess the UI via web browser — http://localhost:5800
- Connect to VNC
- Use the context menu (right-click the desktop) to launch applications

Licensed under the Eclipse Public License v1.0.
