Search code examples
javalinuxeclipsejarsphinx4

How to compile and run HelloWorld.java example from Sphinx4 without and IDE in Linux?


I have been testing the examples (HelloWorld.java) from Sphinx4 with Eclipse, but I would like to compile and run them from the command line. The application needs 5 .jars to be able to run, I have read that in order to compile a java class with multiple .jars I need to execute the following command (as an example I will show short names):

javac -cp one.jar:two.jar:three.jar:four.jar:five.jar HelloWorld.java

The console does not throw any error messages:

parias001@parias001-pc:~/Projects/citadel_voices/sphinx_test > javac -cp jsapi.jar:sphinx4.jar:TIDIGITS_8gau_13dCep_16k_40mel_130Hz_6800Hz.jar:WSJ_8gau_13dCep_8kHz_31mel_200Hz_3500Hz.jar:WSJ_8gau_13dCep_16k_40mel_130Hz_6800Hz.jar HelloWorld.java
parias001@parias001-pc:~/Projects/citadel_voices/sphinx_test > 

I think that the compilation succeeded. Now I would like to run the application, I read that in order to do this, I have to execute the command as follows (Using short name example as before):

java -cp one.jar:two.jar:three.jar:four.jar:five.jar HelloWorld

This is the message that the console throws:

parias001@parias001-pc:~/Projects/citadel_voices/sphinx_test > java -cp jsapi.jar:sphinx4.jar:TIDIGITS_8gau_13dCep_16k_40mel_130Hz_6800Hz.jar:WSJ_8gau_13dCep_8kHz_31mel_200Hz_3500Hz.jar:WSJ_8gau_13dCep_16k_40mel_130Hz_6800Hz.jar HelloWorld
Error: Could not find or load main class HelloWorld

I don't know what is going on here, I should also say that I do not have a lot of experience using external .jars.

The names of the .jars are:

  1. jsapi.jar
  2. sphinx4.jar
  3. TIDIGITS_8gau_13dCep_16k_40mel_130Hz_6800Hz.jar
  4. WSJ_8gau_13dCep_8kHz_31mel_200Hz_3500Hz.jar
  5. WSJ_8gau_13dCep_16k_40mel_130Hz_6800Hz.jar

I appreciate any help you can give me.


Solution

  • You have to include current directory in classpath:

    java -cp .:one.jar:two.jar:three.jar:four.jar:five.jar HelloWorld
    

    Note the leading .:


    From this reference:

    The default class path is the current directory. Setting the CLASSPATH variable or using the -classpath command-line option overrides that default, so if you want to include the current directory in the search path, you must include "." in the new settings.