2010-10-15 3 views
4

Я пытаюсь запустить класс, который я сделал, однако я получаю эту ошибку:java.lang.NoClassDefFoundError при запуске JMS потребителя

Exception in thread "main" java.lang.NoClassDefFoundError: javax/jms/Destination

Я не понимаю, почему это не работает, даже когда я включаю необходимые банки в пути к классам:

java consumer1 -cp activemq-all-5.3.2.jar

+1

Является ли activemq-all-5.3.2.jar в том же каталоге, что и у потребителя1? –

+0

@karianna да это – Jeune

+1

Вы проверили activemq-all-5.3.2.jar, поэтому убедитесь, что у него есть этот класс? (может быть поврежденным артефактом), вы можете выполнить 'jar tvf activemq-all-5.3.2.jar', чтобы увидеть. –

ответ

3

-cp вариант java команды должен быть помещен перед именем класса:

java -cp .;activemq-all-5.3.2.jar consumer1 

В противном случае это рассматривается как аргумент вашего метода main, а не как аргумент java. Также обратите внимание, что если вы укажете путь к классам с параметром -cp, вам необходимо включить текущий каталог, чтобы запустить из него .class файлов.

+0

Я раньше делал параметр -cp перед именем класса. Единственное различие на этот раз заключается в том, что я добавил это ".;" что это значит? Включить в classpath все в текущей папке? Я не понимаю, зачем мне это нужно, когда в текущей папке нет зависимостей. – Jeune

+1

@Jeune: Когда вы запускаете 'java consumer1',' consumer1' - это имя класса в пути к классам. По умолчанию classpath является текущим каталогом, поэтому эта команда будет запускать из него 'consumer1.class'. Когда вы используете опцию '-cp', вы переопределяете путь по умолчанию по умолчанию, поэтому вам нужно явно указать текущую папку, чтобы запустить из нее' consumer1.class'. – axtavt

+0

спасибо! что многое прояснило! :) +1 – Jeune

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