Как я могу перепаковать файл JAR со всеми его зависимостями? - PullRequest
3 голосов
/ 08 июля 2011

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

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

PS Я использую Eclipse, но так как собираюсь развернуть этот проект с помощью WebНачните, экспорт проекта с помощью встроенного инструмента экспорта может быть не очень хорошей идеей, так как все мои попытки заканчивались ClassNotFoundException, поэтому я подозреваю, что мне, возможно, придется упаковать проект в несколько jar-файлов.

Спасибо!

Ответы [ 4 ]

5 голосов
/ 14 октября 2015

Перепаковка распакованного JAR немного расстраивает из-за структуры папок

При распаковке с:

jar xvf JAR_NAME.jar

вы получаете JAR_NAME/ папку

Чтобы упаковать JAR:

  • удалить старую банку

    rm JAR_NAME.jar

  • попасть в папку

    cd JAR_NAME

  • упакуйте банку со ссылкой на родительскую папку

    jar cf ../JAR_NAME.jar *

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

1 голос
/ 11 апреля 2018

Да, распаковка и упаковка могут вас раздражать, особенно в таких средах Linux, как Ubuntu,

Перед распаковкой убедитесь, что ваш Java_Home и путь экспортированы в папку, как показано ниже: В вашем домашнем каталоге вы, скорее всего,файл с именем .bashrc.Перейдите в конец файла и добавьте следующее

export JAVA_HOME=<path to your JDK install e.g. /opt/jdk>
export PATH=$JAVA_HOME/bin:$PATH

. Это задает переменную среды JAVA_HOME, обычно используемую приложениями на основе Java.Затем он добавляет этот каталог в переменную PATH.Операционная система понимает PATH как список родительских каталогов исполняемых файлов.

Теперь распаковать jar xvf JAR_NAME.jar Упаковка обратно jar cf JAR_NAME.jar *

1 голос
/ 08 июля 2011

Взгляните на банку банку .Похоже, он будет делать то, что вам нужно.

0 голосов
/ 08 июля 2011

Вы пробовали "Экспорт готовой банки" в затмении? Это должно работать для вас.

Посмотрите на эту картинку: picture

...