For GitHub, the gh-pages branch contains the documentation for the project. For my fork, the ghpages branch can be viewed using You might want to consider setting up such a branch for your project.

Please note that this site contains the Javadoc files for the Java code and the dOxygen documention for the C (and C-like) code.

The Doxygen files were created by the doxygen software as a separate task. The configuration of the options file (Doxygen) results in the output being written to the gh-pages branch. The root file of the documentation is in the directory doxygen/html.

The Javadocs are created as part of the Maven build. The contents of site/apidocs directory are thn copied to the apidocs directory of the gh-pages branch.


The command javah is part of the Java Development Kit (JDK) and creates a C/C++ header file for Java Native Interface (JNI) methods. In this project, the pom.xml file ran javah against the classes containing JNI methods (CoreMidiClient, CoreMidiDestination, CoreMidiDeviceProvider, CoreMidiDeviceProvider.MidiProperties, and CoreMidiInputPort, CoreMidiOutputPort, CoreMidiSource) and creates the file CoreMidi4J.h. (CoreMidiDeviceProvider.MidiProperties was added to the list because it was used in other JNI methods.)

Any changes to the Java classes may result in changes to CoreMidi4J.h and this would require changes to the other C++ source files and headers. I therefore feel that you should remove the execution of javah from the pom.xml configuration. Since any changes in the results will mean changes to the C code, the use of javah should be part of a manual step. A bash shell script in the directory might be best.


dOxygen is a documenting tool for C-like languages. You can download the dOxygen program from the website and then run it against the source code in the Native folder to get a set of documentation.

I have placed a file Doxygn in Native/CoreMidi4J that contains the options for running Doxygen. You can read this file from within Doxygen to set up the configuration. You will have to change the following parameters to match the file structure on your system.


I have some questions about some of the items in the pom.xml file. It looks' like some of the plugins may not be used, and others have questionable parameters.

Temporary Directory

The code for creating the temporary directory and moving the dynamically linked library there looks like some modifications would help reliability. I will expand this section when I look at it a little more.

Possible System Dependencies

The file Native/CoreMidi4J/java_home is a pointer to the home directory of your JDK (Java Development Kit). Depending on your development system configuration, it may be necessary this file to point to the correct directory.


Return to landing page