возникли проблемы с MANIFEST.MF в банке - PullRequest
3 голосов
/ 12 января 2011

Я создал jar для своего проекта, у меня проблема с MANIFEST.MF.структура моего файла MANIFEST.MF выглядит следующим образом:

------------------------
Manifest-Version: 1.0
Main-Class: com.ensarm.niidle.web.scraper.NiidleScrapeManager
Class-Path: /Projects/EnwelibDatedOct13/Niidle/lib/hector-0.6.0-17.jar
----------------------------

, когда я запускаю это с помощью команды:

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

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

Итак, когда структура моего файла MANIFEST.MF выглядит следующим образом: и я хочу, чтобы он запускался с использованием следующего пути к классам:

---------------------
Manifest-Version: 1.0
Main-Class: com.ensarm.niidle.web.scraper.NiidleScrapeManager
Class-Path: 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

Пожалуйста, сообщите мне решение для этого .....

1 Ответ

1 голос
/ 12 января 2011

Очевидно, что необходимая библиотека не находится на фактическом пути к классам. Здесь написано:

URL-адреса в заголовке Class-Path приведены относительно URL-адреса JAR-файла апплета или приложения.

Итак, насколько я понимаю, java теперь ищет библиотеку hector (только) в этом месте:

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

Обратите внимание, что если вы выполните Java с *Опция 1013 *, записи пути к классам берутся из manefest only , дополнительные записи в -cp или $CLASSPATH игнорируются.

...