This document explains how to launch Felix inside the Eclipse IDE.
Then, it is possible to use Eclipse debugging facilities to debug
To integrate Felix inside Eclipse, you need Felix, Eclipse and nothing else.
First, you need Eclipse. To download the Eclipse IDE, go to:http://www.eclipse.org/downloads/. This tutorial works for Eclipse 3.X.X, but may works on older version.
Creation of the Felix binaries
To integrate Felix inside Eclipse, you have three possibilities
- Using Pax Cursor to launch easily any supported OSGi framework inside Eclipse.
- Integrating the Felix release as a Java project
- Integrating the Felix trunk (latest version) as a Java project
Using Pax Cursor
Pax Cursor is an Eclipse Plugin that adds Eclipse launch configurations for all platforms / versions supported by Pax Runner.
Usign the Felix release as a Java Project
Once, Eclipse is installed, you need to download Felix. You will find this Felix release on http://felix.apache.org/site/downloads.cgi.
Choose a binary release in your preferred archive format. Then, unzip
the release in a temporary folder. We will copy the files elsewhere
Building and Using the Felix Trunk
If you want to use the Felix trunk, follows the instructions to checkou and build it. The Felix binaries are created in the main project. We will copy the files elsewhere later.
The integration uses a Java project. This project will contain
Felix. This section explains how-to create the new project, how-to copy
the Felix release inside the project and finally, how-to configure it.
Creation of the Felix Java project
First, launch Eclipse, and select your preferred workspace. The integration will be attached to this workspace.
Then, click on File -> New -> Project... as depicts on the Figure 1.
Figure1: Creation of a new project
This action will launch the project creation wizard. Select Java project (Figure 2), and click on "Next".
Figure2: Selection of the project type
Enter the project name (Felix for example). Select the "create
separate source and output folders" option (if not already selected).
These actions are depicted on the Figure 3. Then click on "Next".
Figure3: Configuration of the Felix project
On this new wizard page, you need only to change the default output
folder (Felix/bin) to another (classes for example, as presented on
Figure4: Change the "Default output folder"
After that, click on the "Finish" button. You need to see the following structure (Figure 5). Check that the bin folder appears.
Figure 5: Our new Java Project
Copying Felix inside the created project
Now, remember where you uncompress the Felix release, or where is
the Felix main project. Move these files inside the created project.
Override the bin folder when asked.
Figure6: Overwrite the "bin" folder
Once copied, refresh the project. You should see something as presented on the Figure 7.
Figure7: The Felix project after the copy
Preparing the Felix project
The Felix main jar is bin/Felix.jar. So, we need to add this jar in
the project build path as presented on Figure 8. Right-click on the
felix.jar file and then choose Build Path -> Add to Build Path.
Figure8: Add the felix.jar file to the project build path
Create a Run configuration
Now, the Felix project is ready. But, we need to configure a Runconfiguration to launch Felix. To achieve this, right-click on the Felix project and select Run As -> Run... (Figure 9)
Figure9: Create a Run configuration to launch Felix
This action launch the Run configuration windows. Create a new Java Application (Right-click on Java Application and select new) (Figure 10)
Figure 10:Createa new Java Application
On the configuration wizard, enter a configuration name. Afterward,
check the project name (it should be Felix if you choose Felix as
project name). Then, Tick the "Include libraries when searching for a
main class" option. You should obtain something as presented on the
Figure11: Felix run configuration
Next, click on the "Search" button. Enter "Main" in the text area.
In the resulting list, select "Main – org.apache.felix.main". Below the
list, you should see: "org.apache.felix.main /Felix/bin/felix.jar". The
resulting windows must be similar as the Figure 11.
Figure12: Choose to "good" main class
At that moment, clicks on the "Ok" button. You come back to the Run
configuration windows. Apply the configuration ("Apply" button). And
click on the "Run" button (Figure 13).
Figure13: The Felix run configuration can be launched
Once launched, you should see in the Eclipse console view:
Figure14: Endly Felix inside Eclipse!
You can use the console as the "normal" Felix console. In fact it is
the normal Felix console in color. Enter a profile name as
"integration_test" and then use the console normally (Figure 15).
To stop Felix, either type shutdown in the console, either clicks on the red square ("terminate") in the console toolbar.
Figure15: Use the Felix console normally
Once the run configuration for Felix is created (and launched a
first time), you can launch Felix directly by clicking on the Run icon
and by choosing Felix (Figure 16). Moreover, you can use Eclipse
debugging features by launching Felix in debug mode. To achieve this,
click on the debug icon and then choose Felix (Figure 17).
Note: You can launch Felix in profiling mode too, if you have installed TPTP.
Figure16: Launching directly Felix from the icon bar
Figure17: Launch Felix in debug mode
Obviously, you can modify the Felix configuration. The Felix configuration file is in the conf folder (config.properties). This section presents briefly two modifications. To go further, look at the Felix documentation.
Configure the Felix cache location
Felix store profiles and deployed bundle inside a cache. Normally
this cache is located at_$user_home/.felix._ It is possible to change
this location in order to clean it quickly.
Open the configuration file. Then, add a new line with
felix.cache.dir=cache (Figure 18). Now, when you will start Felix, it
will create a newcache folder (in your project)(Figure 19). All profiles will be stored in. To clean your cache, just delete the cache directory.
Note: refresh your project; else the folder does not appear.
Figure18: Customize the Felix cache location
Figure19: The Felix cache inside your project
Add auto-started bundles
Often, you want that Felix deploy automatically some bundles. By
modifying the felix.auto.start.1 (or 2), it is possible to configure
which bundle will be deployed at startup.
To achieve this, open the configuration file and add your needed
bundle path to the felix.auto.start.1 property (Figure 20). Be careful
to the / in your path, to the \ at the end of the line, and to leave a
space to the beginning of a new line.
Figure20: Add auto-started bundles
Now that we are able to launch Felix as a Java Application, we can
use the debugging and profiling features of Eclipse. To debug bundles,
create a new project for your bundle. Then develop your bundle
normally. Afterward, compile / package your bundle to obtain the bundle
Jar file. You can use Eclipse PDE, Maven, BND, iPOJO, etc... to package
To debug, your code, first place a breakpoint inside your code.
Launch Felix in debug mode. Then deploy your bundle Jar file. When the
execution reaches the breakpoint, Eclipse opens the debug perspective.
You can use all debugging features normally.
This document has presented how-to integrate Felix inside Eclipse.
For any question or feedback, feel free to send an email to
clement.escoffier@gmail .com or on the Felix mailing list