Вход:  Пароль:  
FreeSource: AltLinux/Policy/Java/ClassPathInManifest ...
Free Source | Каталог | Изменения | НовыеКомментарии | Пользователи | Регистрация |
Это старая версия AltLinux/Policy/Java/ClassPathInManifest за 2008-01-31 17:00:51..

В MANIFEST.MF не должно быть атрибута Class-Path.
О причинах и последствиях можно почитать на https://www.zarb.org/pipermail/jpackage-discuss/2003-June/002141.html
тж. обсуждение в devel@, gmane view

DS> Хотя у нас есть еще одна вещь — в META-INF может быть жестко прописаный
DS> classpath. Я не знаю какие недостатки у этого решения, но плюсы очевидны:
DS> – можно делать простые файловые зависимости,
DS> – их удовлетворение может автоматически означать возможность запустить приложение.

jpackage policy не зря запрещает жестко прописаный в META-INF classpath.


см. 
http://www.freesource.info/wiki/Altlinux/Policy/Java/ClassPathInManifest


The Class-Path system of MANIFESTs is evil
http://jpackage.org/jpprequest.php


https://www.zarb.org/pipermail/jpackage-discuss/2003-June/002095.html


Кроме того, добавлю к вышесказанному, что
с одной стороны, это аналог -rpath, а стандартных мест,
где может быть библиотека, несколько, наподобие /lib и /usr/lib.
Посмотрите «Глава 3. Структура директорий»
http://www.freesource.info/wiki/Altlinux/Policy/Java/JPackagePolicyTranslation#h11610-10


скрипт build-classpath обходит все эти места, чтобы найти нужную библиотеку.
Тот же самый $(build-classpath xml-commons-apis) может развернуться
в /usr/share/java/xml-commons-apis.jar, а может в
/usr/lib/jvm-exports/jre-1.6.0-sun/xml-commons-apis.jar -> /usr/lib/jvm/java-1.6.0-sun-1.6.0.04/jre/lib/rt.jar


Как и в сишных библиотеках, в дистрибутиве -rpath скорее мешает.


С другой стороны, и это killer, жестко прописаный в META-INF classpath
сделает такие библиотеки непригодными для разработчика.


Так бы люди использовали для своих проектов дистрибутивные jar,
но с жестко прописаным в META-INF classpath поведение программы
с такими библиотеками будет на чужой машине разрушительно непредсказуемым.
Кто знает, что и какой версии оно там загрузит, чтобы начать
Великую Войну За Тапки ?


Придется искать jar'ы по файлопомойкам интернета, откуда угодно,
но только не из родного дистрибутива. Кому тогда они вообще нужны?

Общая информация о classpath

По поводу задания пеменной classpath.
http://javahowto.blogspot.com/2006/06/6-ways-of-setting-java-classpath.html
http://www.onjava.com/pub/a/onjava/2005/04/13/dependencies.html


Если используется конструкция вида java -jar, то classpath должен быть задан в MANIFEST.MF, атрибут Class-Path.
При использовании ключа jar игнорируется значение ключей classpath и cp


как следствие, в дистрибутиве использование java -jar для запуска приложений не приветствуется.


 
Файлов нет. [Показать файлы/форму]
Комментариев нет. [Показать комментарии/форму]