2011-01-14 3 views
0

hi Я создал банку внутри этой папки: '/usr/local/bin/niidle.jar' в eclipse. И у меня есть еще одна банка внутри /usr/local/bin/niidle.jar. В моем файле niidle.jar есть одна папка «lib», а в папке «lib» есть еще один файл jar «hector-0.6.0-17.jar». Я добавил этот файл 'Гектор-0.6.0-17.jar' в MANIFEST.MF следующим образом:MANIFEST.MF issue


Manifest-Version: 1.0 
Main-Class: com.ensarm.niidle.web.scraper.NiidleScrapeManager 
Class-Path: hector-0.6.0-17.jar 

Но когда я запускаю это, используя команду:

>>java -jar /usr/local/bin/niidle.jar arguments... 

Он не работает .. Это показывает сообщение об ошибке: -

Exception in thread "main" java.lang.NoClassDefFoundError: me/prettyprint/hector/api/Serializer 
    at com.ensarm.niidle.web.scraper.NiidleScrapeManager.main(NiidleScrapeManager.java:21) 
Caused by: java.lang.ClassNotFoundException: me.prettyprint.hector.api.Serializer 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:200) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:252) 
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320) 
    ... 1 more 

В чем проблема, то пожалуйста скажите мне решение для этого исключения ...

+0

ли работа, если вы кд (перейти к) каталог, в котором ваша баночка находится: CD/USR/местные/бен Java -jar niidle.jar аргументы ... – Kennet

ответ

0

http://www.jdotsoft.com/JarClassLoader.php и другие баночка погрузчики, связанные со страницы обобщать вопрос и решение

+0

вы уверены? Проблема в том, что hector lib не найден, и я не вижу намека на страницы ссылок ... –

+0

Думаю, что да. Может быть, я вас не понимаю? Если вам нужна одна банка, содержащая все ваши банки (и другие вещи), вам нужно что-то вроде JarClassLoader. – MJB

1

Это действительно должно работать! . Пожалуйста, перепроверить, что оба файлы банку (niidle.jar и hector-0.6.0-17.jar находятся в одной и той же папке После the example on the official Java tutorial, это действительно должно работать:

/usr/ 
    local/ 
     bin/ 
     niidle.jar 
     hector-0.6.0-17.jar 

В противном случае, проверьте еще раз, если Гектор банка является очень же один, который был использован внутри затмения. Вы можете иметь различные версии баночки для компиляции и выполнения, и это может привести к той же самой проблеме. может быть недостающий класс не внутри Гектор Lib.


Дополнение - если вы написали файлы манифеста с текстовым редактором, убедитесь, что, что последняя строка - пустая строка! Если строка атрибута Class-Path является последней, и если она не заканчивается CR или LF, то она не будет анализироваться - и хекторная банка не будет добавлена ​​в путь класса.

+0

Черт ... это сугучий деталь, который нужно запомнить (пустая строка). Почему, черт возьми, они не исправляют это? Это занимает всего 5 минут ... Я всегда помню, чтобы добавить пустую строку, потому что я знаю, как сложно это забыть ... но это жалко, чтобы иметь эту проблему в 2013 году ... –

+0

Или 2017. Есть ли любая причина этой «пустой линии»? – Atcold