Classpath включая JAR в JAR

дал jar в папке /usr/local/bin/niidle.jar.

И я прокомментировал MANIFEST.MF в банке следующим образом:
Manifest-Version: 1.0
Main-Class: com.ensarm.niidle.web.scraper.NiidleScrapeManager
Class-Path: hector-0.6.0-17.jar

И мой файл 'hector-0.6.0-17.jar' находится в следующей папке:

/Projects/EnwelibDatedOct13/Niidle/lib/hector-0.6.0-17.jar

И я добавил этот 'hector-0.6.0-17.jar' в папку niidle.jar следующим образом:

niidle.jar/lib/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

И когда я снова запускаю, используя другую команду следующим образом:

java -cp /Projects/EnwelibDatedOct13/Niidle/lib/hector-0.6.0-17.jar -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-------------

так скажите мне, что решение для этого. или любой модификации в MANIFEST.MF в банке

 Erick Robertson13 янв. 2011 г., 11:50
 Will13 янв. 2011 г., 16:15
Итак, Атул, у тебя проблемы с манифестом в банке?

Ответы на вопрос(3)

ar /usr/local/bin/niidle.jar arguments .....

Вы не можете использовать-cp переключаться вместе с-jar переключатель.

Изhttp://mindprod.com/jgloss/classpath.html:

Если вы используете опцию -jar, java.exeигнорирует путь к классам, Это будет выглядеть только в этой банке! Попробуйте вместо этого использовать манифест Class-Path, чтобы Java выглядела во вспомогательных банках

И я добавил этот 'hector-0.6.0-17.jar' в папку niidle.jar следующим образом:

Насколько мне известно, вы не можете гнездиться.jar файлы таким образом.

Так как у вас естьClass-Path: hector-0.6.0-17.jar вам нужно иметьneedle.jar иhector-0.6.0-17.jar бок о бок и бегиniidle.jar из их общего каталога (используя-jar переключай если хочешь).

алог или файл niidle.jar? Я бы посоветовал вам опубликовать полный манифест, структуру каталогов, используемую вами командную строку и текущий рабочий каталог.

Но, как правило, вы должны написать в своем манифесте: Class-Path: hector-0.6.0-17.jar

затем поместите все банки в один каталог. Давайте назовем этоfoo, Теперь откройте командную строку, перейдите в foo и запустите

java -jar niidle.jar args ...

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

Ваш ответ на вопрос