Skip to main content

Cli.java won't compile in jahmm

Problem:

When you compile Cli.class in terminal or Eclipse, you may get the following error:

Cli.java:27: package be.ac.ulg.montefiore.run.jahmm.io does not exist import be.ac.ulg.montefiore.run.jahmm.io.FileFormatException; ^ Cli.java:54: cannot find symbol symbol : class AbnormalTerminationException
9 more errors

Solution:

You must to pass parameters to your class. The class takes 5 parameters which are:
  • Parameter 1: should be one of the following:
    • create: creates a new HMM description file,
    • print: prints a HMM
    • learn-kmeans: applies the k-Means algorithm
    • learn-bw: applies the Baum-Welch algorithm
    • generate:  generates an observation sequence given a HMM
    • distance-kl:  computes the distance between two HMMs
  • Parameter 2:
    • -opdf. It takes one of the following:
    • -r: argument describes that HMM will take 4 integers. For example, -r 4 means that HMM takes 0.25 0.25 0.25 0.25 observations probabilities. The model in Jahmm assign the same probabilities.
    • -ng: specify the number of gaussians distribution. For example, -ng 2.
    • -d: specify the vector dimension. For example, -d 2, means that the model will create a matrix of 2*2 probabilities.
    • -n: specify the number of states to build the model. For example, -n 4.
    • -o: specify the name of your output file. For example, -o  output.hmm.

From Eclipse:
  • Add your Junit.jar and jahmm-0.6.1.jar.
    • Right click on your project > Properties > Java Build Path > Libraries > Add JARS (if it is within your project folder), or Add External JARS (if the jar outside your project folder).
    • Apply.
  • Then,
    • Go to Cli.java that exists in cli in your source code folder.
    • Right click on Cli.java > Run As > Run Configurations > select Arguments tab and Enter:
      • create -opdf integer -r 4 -n 3 -o test.hmm
    • Then click Apply and Run.



The output will look like the following: (of course it will differ based on your configuration to the parameters)


Problem Source:

JAHMM User Guide:

Comments

Popular posts from this blog

Error Class names are only accepted if annotation processing is explicitly requested

Do you get the following error? Class names, 'Hello', are only accepted if annotation processing is explicitly requested 1 error In case you got this error, then you forget to add .java to the file name when you compile it So when you want to compile a file using cmd console window write the filename.java extension Example: Javac Hello.java If you write it in this way the error will go away. So don’t forget to include suffix with your file name during compilation.

An attempt was made to insert a node where it is not permitted

Do you face this Error while you are writing code to generate xml file from java? Exception in thread "main" org.w3c.dom.DOMException : HIERARCHY_REQUEST_ERR: An attempt was made to insert a node where it is not permitted.        at com.sun.org.apache.xerces.internal.dom.CoreDocumentImpl.insertBefore(Unknown Source)        at com.sun.org.apache.xerces.internal.dom.NodeImpl.appendChild(Unknown Source)        at generatexml.WriteXMLFile.main( WriteXMLFile.java:30 ) Well the answer is: Don't insert the node where it isn't permitted. Change your generated directory file path from 'C' to other directory ex, D or to any directory you have. Make sure the ‘appendChild’ is referring to the right element. Don’t appending twice, only make it once. Ex, //Writetoxml.java   Element rootElement = doc . createElement ( " Company " );   doc . appendChild ( ro...

What do you know about HKEY_LOCAL_MACHINE (HKLM)?

What is it? HKEY stands for " Handle to Registry Key ”. The HKEY_LOCAL_MACHINE subtree contains information about the local computer system, including hardware and operating system data, such as bus type, system memory, device drivers, and startup control parameters. It is one of several registry hives in the Windows Registry . HKEY_LOCAL_MACHINE contains the majority of the configuration information for the software you have installed and for the Windows operating system itself. It also contains information about currently detected hardware and, beginning in Windows Vista, information about your computer's boot configuration. HKLM components The following registry keys are located under the HKEY_LOCAL_MACHINE hive: HKEY_LOCAL_MACHINE\BCD00000000 HKEY_LOCAL_MACHINE\COMPONENTS HKEY_LOCAL_MACHINE\HARDWARE HKEY_LOCAL_MACHINE\SAM HKEY_LOCAL_MACHINE\Schema HKEY_LOCAL_MACHINE\SECURITY HKEY_LOCAL_MACHINE\SOFTWARE HKEY_LOCAL_MACHINE\SYSTEM No...