2013-03-06 3 views
1

Я хочу использовать банку Trove-1.0.2 для карт в моем проекте java. Я использую Eclipse IDE. Я добавил трофейную банку, используя «Добавить внешние банки» в пути сборки, но все же получаю ClassNotFoundException.Trove jar Класс THashMap не найден Исключение

Но класс gnu.trove.THashMap присутствует в библиотеке, когда я проверил.

Error: java.lang.ClassNotFoundException: gnu.trove.THashMap 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:217) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:205) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:321) 
     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:266) 
     at com.a.VCLReduce0.reduce(VCLReduce0.java:38) 
     at com.a.VCLReduce0.reduce(VCLReduce0.java:1) 
     at org.apache.hadoop.mapred.ReduceTask.runOldReducer(ReduceTask.java:519) 
     at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:420) 
     at org.apache.hadoop.mapred.Child$4.run(Child.java:255) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at javax.security.auth.Subject.doAs(Subject.java:416) 
     at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121) 
     at org.apache.hadoop.mapred.Child.main(Child.java:249) 
+0

Является затмение не показывая вам какое-либо ошибки компилятора? – ddmps

+0

нет .. я импортировал класс gnu.trove.map.hash.THashMap, поэтому я не получаю ошибок компиляции. Я добавил банку, используя путь сборки. но все же я получаю класс не найденной ошибкой. Я загрузил банку из репозитория maven. Это что-то делать с исключением? –

ответ

0

Проверьте свой путь класса Runtime в Eclipse (хотя библиотека по-настоящему должна быть там по умолчанию). Я думаю, вы запускаете его в Eclipse, используя меню «Выполнить».

  1. Щелкните правой кнопкой мыши основной класс.
  2. Выберите «Run As -> Run Configurations ...»
  3. Развернуть Java-приложение в левой части диалогового окна. Если вы видите список основных классов, выберите его, в противном случае нажмите кнопку «Новый запуск Config» и убедитесь, что оно отображает ваше основное имя класса в поле «Основной класс» .
  4. Перейдите на вкладку ClassPath и посмотрите, указан ли ваш файл Trove.jar. Если нет, добавьте его и запустите приложение.

Если он находится на пути к классу, может быть, что сам баннер Trove-1.0.2 имеет зависимости, которые вы не добавили в свой путь сборки, хотя я проверил с Maven Central, и это не выглядит в этом случае.

+0

Я запускаю эту банку в кластере hadoop, и после выполнения вышеуказанных изменений я все равно получаю сообщение об ошибке. Я спустил кувшин отсюда: http://mvnrepository.com/artifact/net.sf.trove4j/trove4j/3.0.2. –

0

Для выполнения задания в hadoop вам необходимо иметь отдельный файл jar с зависимостями, которые распакованы в банке или указаны в манифесте.

Смотрите этот вопрос для некоторых подсказок о выполнении заданий Hadoop от затмения: Launch a mapreduce job from eclipse

они также упоминают эту статью, кажется, есть хорошая информация о настройке Eclipse: http://www.mapr.com/blog/basic-notes-on-configuring-eclipse-as-a-hadoop-development-environment-for-mapr

+0

Привет, Я запускаю автономный файл jar, который я создаю с помощью eclipse. Затем я загружаю его на сервер и запускаю. Я не запускаю его непосредственно из затмения. Я увидел файл зависимостей pom, откуда я скачал здесь: http://mvnrepository.com/artifact/net.sf.trove4j/trove4j/3.0.2 У меня нет файла манифеста в моем проекте. Можете ли вы сказать мне, что я должен сделать для этого случая? –

+0

@MahalakshmiLakshminarayanan: Я не знаю, может ли затмение строить банки с зависимостями. Я предлагаю вам взглянуть, и мэйв или муравей. –

+0

попробует это и посмотрит. –

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