Fork me on GitHub

Developing with Eclipse

Eclipse is the preferred development environment for junixsocket. Here are some steps that make your life easier.

NOTE: There are no special instructions if you “just use” junixsocket. Simply add junixsocket to your dependencies.

Install a recent version of Eclipse

Download the most recent version of the Eclipse IDE from https://www.eclipse.org/

It is recommended to download the package “Eclipse IDE for Java Developers” or “Eclipse IDE for Enterprise Java Developers”. You can always add packages later through “Eclipse Help -> Install new software” or the Eclipse Marketplace.

Keep the “junixsocket-native-*” projects closed

Due to incompatibilities with Eclipse m2e, you need to keep the following projects closed (or simply do not import them into the Eclipse workspace in the first place):

  • junixsocket-native-common
  • junixsocket-native-custom

If you don't, you may encounter the following error:

java.lang.UnsatisfiedLinkError: Could not load native library.

Moreover, if you try to run “Selftest” (from junixsocket-selftest) from within Eclipse, it will most likely tell you that the selftest failed.

Code Formatter and Style conventions

We use the coding conventions from https://github.com/kohlschutter/coding-style.

The first time you run mvn clean install on junixsocket, these configurations will be automatically installed into a coding-style folder in the top-level project (unless the projects exists one level above the junixsocket parent project).

You are encouraged to import the corresponding configuration files to your Eclipse workspace.

If you don't want to apply these settings to your other projects, create a new Eclipse workspace for junixsocket. You can also run mvn process-sources -Dreformat to apply the formatting rules (along with other reformatting operations) from the command line.

Code quality checks

You should install SpotBugs and CheckStyle. They're incredibly helpful tools to ensure high-quality code.

The coding-style project has configurations for both. Import them into Eclipse.

  • coding-style/eclipse/checkstyle-configuration.xml (add to Eclipse Preferences -> Checkstyle -> New… -> External Configuration File)
  • coding-style/eclipse/spotbugs-exclude.xml (add to Eclipse Preferences -> Java -> SpotBugs -> Filter Files -> Exclude filter files)

You can use mvn clean install to check from the command line. Add -Dstrict to fail if there are issues.

Native hooks

Enable “Refresh using native hooks or polling” (under Eclipse Preferences -> General -> Workspace) I don't know why this isn't on by default.

Use Java 17 or newer for development

Make sure Java 17 or later is installed and available in Eclipse.

Working with the native C JNI library

Whenever you want to recompile the library, make sure to rebuild from the command line, using the following commands:

cd junixsocket 
mvn clean install -DskipTests=true

The -DskipTests=true makes sure we can actually install the new code, even if it may not pass all unit tests.

If you just want to see if the code compiles, use this instead:

cd junixsocket 
mvn clean install -DskipTests=true -pl junixsocket-native