Как при создании файла jar сохранить существующие пути к классам для других файлов jar?

Недавно я выполнил задание по Java в колледже. В задании использовались различные другие файлы jar, например. коннектор mysql. Когда я создал файл jar из программ Java в проекте, соединения с этими другими файлами jar были потеряны.

Я пробовал разные комбинации при создании файла jar и однажды включил коннектор mysql, но безрезультатно. Я не ожидал, что это сработает, поскольку мои исследования показали, что обычно только звуковые эффекты и изображения классифицируются как приемлемые дополнительные файлы.

Все находится в одном каталоге, и все пути к классам к различным файлам jar являются относительными. Моя IDE — jGrasp. Файл jar при выполнении делал все, что не требовало ресурсов, кроме классов Java, которые я создал.

Возможно ли то, чего я пытался достичь? Если да, то как я могу сохранить полную функциональность системы при создании файла jar?

Я был бы очень признателен за любую помощь, которую вы можете предоставить.


person patantdoh    schedule 21.04.2011    source источник


Ответы (1)


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

Решение 1. Вы можете изменить параметр Class-Path в файле манифеста jar-файла, если хотите добавить другие jar-файлы в путь к классу.

Решение 2. Если вы хотите распространять свое приложение как один файл jar, вам придется объединить файлы jar с помощью какого-либо инструмента, такого как FatJar или OneJar.

Похожие вопросы:

person aioobe    schedule 21.04.2011
comment
Вы можете вкладывать JAR-файлы, если вы используете загрузчик классов, который его поддерживает; фактически один из модулей maven superjar делает это за вас. (Я забыл, какой именно.) - person Joseph Ottinger; 21.04.2011
comment
Значит, maven автоматически включает в дистрибутив специальный загрузчик классов? В этом случае следует отметить, что некоторые системы имеют ограничения безопасности при использовании пользовательского загрузчика классов. - person aioobe; 22.04.2011
comment
айообе: без сомнения. Но в большинстве ЭТИХ систем (Java EE, OSGi) встроенный путь к классам уже поддерживается, поэтому вам не придется беспокоиться о собственном загрузчике классов. - person Joseph Ottinger; 22.04.2011