2015-05-27 6 views
0

Я тестировал примеры (HelloWorld.java) из Sphinx4 с Eclipse, но я хотел бы их компилировать и запускать из командной строки. Приложению требуется 5 .jars, чтобы иметь возможность запускать, я прочитал, что для компиляции класса java с несколькими .jars мне нужно выполнить следующую команду (в качестве примера я покажу короткие имена):Как скомпилировать и запустить пример HelloWorld.java из Sphinx4 без и IDE в Linux?

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

консоль не бросает никаких сообщений об ошибках:

[email protected]:~/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 
[email protected]:~/Projects/citadel_voices/sphinx_test > 

Я думаю, что компиляция удалось. Теперь я хотел бы, чтобы запустить приложение, я прочитал, что для того, чтобы сделать это, я должен выполнить команду следующим образом (используя короткий пример имя, как и раньше):

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

Это сообщение, которое бросает консоль :

[email protected]:~/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 

Я не знаю, что происходит здесь, я должен также сказать, что у меня нет большого опыта с использованием внешних .jars.

Названия .jars являются:

  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

Я ценю любую помощь, которую вы можете мне дать.

+0

Вы уверены, что ваш 'HelloWorld.java' файл содержит правильный 'основной' метод? – RealSkeptic

+0

Где находится HelloWorld.class? – Ingo

+0

Я на 100% уверен, что HelloWorld.java содержит действительный основной метод. – AmirBayareh

ответ

1

Вы должны включить текущий каталог в пути к классам:

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

Примечание ведущий .:


От этого 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.

+0

Большое спасибо за эту информацию. Я включил "." но теперь он показывает другую ошибку: 'Исключение в потоке" main "java.lang.NoClassDefFoundError: HelloWorld (неправильное имя: edu/cmu/sphinx/demo/helloworld/HelloWorld)' Я думаю, я знаю, в чем проблема , в коде HelloWorld.java включен пакет: "package edu.cmu.sphinx.demo.helloworld;" Если мне нужно скомпилировать пакет, следует ли следовать тем же инструкциям, что и раньше? Спасибо. – AmirBayareh

+0

Я просто прокомментировал линию с пакетом, теперь все работает так, как должно! Большое спасибо! – AmirBayareh

+0

Если вы не хотите комментировать пакет, вы должны поместить классы в иерархию папки, соответствующую пути (то есть пакет a.b.c => path a/b/c) –

 Смежные вопросы

  • Нет связанных вопросов^_^