2013-11-23 2 views
1

У меня есть приложение hadoop. Я пишу java-программу, которая нуждается в пакете org.json.jar, а также hasoop-core.jar. Я компилирую этот исходный файл со следующей командой linux.Как скомпилировать исходный файл java с несколькими внешними банками?

mkdir q3_classes 
javac -classpath ${HADOOP_HOME}/hadoop-core.jar:${HADOOP_HOME}/org.json-20120521.jar -d q3_classes ETLQ3.java 
jar -cvf q3.jar -C q3_classes/ . 

Он компилируется успешно. Но когда я запускаю эту программу со следующей командой. (Эта же команда применяется к примеру WordCount успешно.)

hadoop jar q3.jar MainClassName /input /output 

Он выбрасывает исключение ClassNotFound. Класс org.json.object не найден.

Так что, интересно, что-то не так в моей команде компиляции? Как скомпилировать исходный файл java с этими двумя пакетами jar?

ответ

0

Я предполагаю, что у вас нет JAR на вашем пути к классу. Добавьте их в свой путь к классам.

+0

Спасибо. Не могли бы вы рассказать мне, как это сделать? – Duran

+0

@ user3023526 Из вашего примера вы делаете * seem *, чтобы иметь банку в своем пути к классам. Ваш HADOOP_HOME правильно указывает? –

+0

Да. Потому что я запустил WordCount, используя ту же команду без org.json.jar. Он работает правильно. – Duran

0

Вероятно, вам необходимо отправить банку org.json-20120521.jar на все узлы кластера. Попробуйте использовать --libjars вариант

Hadoop баночка q3.jar MainClassName/ввода/вывода --libJars org.json-20120521.jar

Убедитесь, что вы после того, что сказал here in the edit part на то, как на самом деле написать заявление MapReduce ,

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