This directory contains source code that is not part of the Apache
Commons Math library.  It contains syntactically correct and working
examples of use.

In order to run one of the applications (a class that must contain a
"main" method), you would type (in a shell console) a command similar
to the following:
 $ mvn -q exec:java \
   -Dexec.mainClass=org.apache.commons.math4.userguide.sofm.ChineseRingsClassifier

Alternatively, a "standalone" JAR can be created with the following
command:
 $ mvn -Dmainclass=org.apache.commons.math4.userguide.rng.ChineseRingsClassifier \
       -Djarbasename=ChineseRingsClassifier \
       clean compile assembly:single
where the value of the "mainclass" argument is the fully-qualified name
of the class whose "main" method will be the program's entry point, and
the "jarbasename" argument is the basename of the JAR file to be created.
Then, the application can be run with the following command:
 $ java -jar ChineseRingsClassifier [args]
where "[args]" is the list of arguments passed to the "main" method.
