|
Сборка jar-файла. Проблема с добавленными сторонними библиотеками
|
|||
---|---|---|---|
#18+
Добрый день. Решил овладеть утилитами сборки проектов из консоли операционной системы. Сам являюсь пользователем OS Ubuntu. Собрал свой проект полностью из консоли OS. Суть проекта: консольное приложение на OpenJDK 14 делает следующее: Мониторит папку с указанным интервалом времени и собирает пути файлов, после этого отдает результат задаче на конвертацию файлов с PDF в JPG. Задача по конвертации файлов вычисляет региональные файлы по сумме SHA, после сего отфильтрованные файлы конвертируются в JPG по станично. Структура проекта: есть три скрипта по этапной сборке jar-файла: compilation.sh - компиляция классов build_art_jar.sh - сборка скомпилированных классов в jar-файл с внешними библиотеками running.sh - вспомогательный скрипт для проверки запуска папки: bin - хранит откомпилированные классы и внешние подключаемые библиотеки lib - хранит подключаемые библиотеки src - исходный код Но наткнулся на образовавшуюся проблему. Суть проблемы: В конечном собранном jar-файле есть включенные сторонние под лицензией Apache 2.0. jar-файл содержит манифест с указанием главного класса и путей к добавленным в jar-файл библиотекам. Когда я пытаюсь запустить jar-файл то запуск происходит, но не происходит не каких действий со стороны программы. но стоит мне рядом с запускаемым jar-файлом положить папку с внешними библиотеками, которые участвуют в работе программы, начинается процесс сканирования и конвертации файлов. Ссылка на проект: https://drive.google.com/file/d/1Fsmt5_KE_2J6TnJw-k-sLQjJ3WJ8qO0o/view?usp=sharing Есть подозрения что я что то не так сделал при формирования файла manifest.mf P.S. Пользоваться сборщиками проектов умею и можно не предлагать использовать их. Я хочу разобраться как все именно работает "под капотом". ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2020, 11:29 |
|
Сборка jar-файла. Проблема с добавленными сторонними библиотеками
|
|||
---|---|---|---|
#18+
Мысль. 1) Мониторить папку - это наверное не очень удобно с точки зрения контроля. Как понять где твой файл если два процесса независимо друг от друга бросили по pdf. Может лучше - какой-то rest-endpoint? Как функция. 2) На гугл-драйве - неудобно работать онлайн. Не programmer's way. Некоторые читатели форума сидят с мобильных устройств. Чтоб глянуть сорцы - надо кучу телодвижений сделать. Не думал опубликовать на bitbucker или github? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2020, 12:04 |
|
Сборка jar-файла. Проблема с добавленными сторонними библиотеками
|
|||
---|---|---|---|
#18+
DimkaFriend хочу разобраться как все именно работает "под капотом". Там сборщики пакетов всё складывают внутрь jar архива. Можешь сам попробовать руками туда засунуть в lib/ нужные либы, jar - это zip архив. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2020, 12:12 |
|
Сборка jar-файла. Проблема с добавленными сторонними библиотеками
|
|||
---|---|---|---|
#18+
DimkaFriend Пользоваться сборщиками проектов умею и можно не предлагать использовать их. Как Мастер Костылей одобряю ваш велозавод. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2020, 12:18 |
|
Сборка jar-файла. Проблема с добавленными сторонними библиотеками
|
|||
---|---|---|---|
#18+
DimkaFriend Добрый день. Решил овладеть утилитами сборки проектов из консоли операционной системы. Сам являюсь пользователем OS Ubuntu. Собрал свой проект полностью из консоли OS. Суть проекта: консольное приложение на OpenJDK 14 делает следующее: Мониторит папку с указанным интервалом времени и собирает пути файлов, после этого отдает результат задаче на конвертацию файлов с PDF в JPG. Задача по конвертации файлов вычисляет региональные файлы по сумме SHA, после сего отфильтрованные файлы конвертируются в JPG по станично. Структура проекта: есть три скрипта по этапной сборке jar-файла: compilation.sh - компиляция классов build_art_jar.sh - сборка скомпилированных классов в jar-файл с внешними библиотеками running.sh - вспомогательный скрипт для проверки запуска папки: bin - хранит откомпилированные классы и внешние подключаемые библиотеки lib - хранит подключаемые библиотеки src - исходный код Но наткнулся на образовавшуюся проблему. Суть проблемы: В конечном собранном jar-файле есть включенные сторонние под лицензией Apache 2.0. jar-файл содержит манифест с указанием главного класса и путей к добавленным в jar-файл библиотекам. Когда я пытаюсь запустить jar-файл то запуск происходит, но не происходит не каких действий со стороны программы. но стоит мне рядом с запускаемым jar-файлом положить папку с внешними библиотеками, которые участвуют в работе программы, начинается процесс сканирования и конвертации файлов. Ссылка на проект: https://drive.google.com/file/d/1Fsmt5_KE_2J6TnJw-k-sLQjJ3WJ8qO0o/view?usp=sharing Есть подозрения что я что то не так сделал при формирования файла manifest.mf P.S. Пользоваться сборщиками проектов умею и можно не предлагать использовать их. Я хочу разобраться как все именно работает "под капотом". Вроде как поиск jar осуществляется относительно расположения манифеста. В данном случае он внутри jar в директории bin. То есть в вашем случае нужно использовать ../lib вместо lib ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2020, 12:23 |
|
Сборка jar-файла. Проблема с добавленными сторонними библиотеками
|
|||
---|---|---|---|
#18+
mayton, 1) такой подход был выбран с целью в дальнейшем научится работать со спорными ситуациям(не на каждом проекте будет все идеально) 2)Не имею привычки захламлять свой git профиль некачественным контентом. К тому же, качественный ответ на вопрос, который я поднял, с головы ответят единицы, так как почти все сидят на сборщиках проектом. А меня интересует качественный результативный ответ. Когда я где бы то небыло отвечаю, стараюсь подходить с практики, то есть загрузить и "пощупать" проблему ручками. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2020, 12:42 |
|
Сборка jar-файла. Проблема с добавленными сторонними библиотеками
|
|||
---|---|---|---|
#18+
DimkaFriend mayton, 1) такой подход был выбран с целью в дальнейшем научится работать со спорными ситуациям(не на каждом проекте будет все идеально) 2)Не имею привычки захламлять свой git профиль некачественным контентом. К тому же, качественный ответ на вопрос, который я поднял, с головы ответят единицы, так как почти все сидят на сборщиках проектом. А меня интересует качественный результативный ответ. Когда я где бы то небыло отвечаю, стараюсь подходить с практики, то есть загрузить и "пощупать" проблему ручками. Я бы сказал что ваш подход некорректен даже в случае "без сборщика". В большинстве случаев в bin лежат .sh и прочие скрипты запуска, а все jar - в lib/jars. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2020, 12:45 |
|
Сборка jar-файла. Проблема с добавленными сторонними библиотеками
|
|||
---|---|---|---|
#18+
crutchmaster DimkaFriend хочу разобраться как все именно работает "под капотом". Там сборщики пакетов всё складывают внутрь jar архива. Можешь сам попробовать руками туда засунуть в lib/ нужные либы, jar - это zip архив. Я не скажу что ты не прав так как не знаю этого на верняка, но если ты откроешь, описанные мной, срипты то увидишь что все в них делается автоматом. За правильность ссылок на внешние библиотеки отвечает вложенный в jar-файл manifest.mf ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2020, 12:46 |
|
Сборка jar-файла. Проблема с добавленными сторонними библиотеками
|
|||
---|---|---|---|
#18+
DimkaFriend, по поводу некачественного контента. Я точно также рассуждал лет 10 назад. Но версионный контроль идейно предполагает бесконечную эволюцию кода. И качественного релиза там никогда не будет. Всегда будет какой-то code-review энузиаст который в отчете напишет кучу гневных фраз к "идеальному" твоему коду. Поэтому можешь не надувать щёки а спокойно паблишить. Гитхаб завален миллиардами файлов кода и никому ты по большему счету не нужен. И качать репу для резюме или собеседований - дело безсмысленное. Никто в 80% случаев туда просто не смотрит. И тем более почти никогда не смотрит в историю ревизий. Это я говорю как тот кто проводил собесы и тоже также сквозь пальцы смотрел на джунские репо. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2020, 12:51 |
|
Сборка jar-файла. Проблема с добавленными сторонними библиотеками
|
|||
---|---|---|---|
#18+
Lelouch DimkaFriend Добрый день. Решил овладеть утилитами сборки проектов из консоли операционной системы. Сам являюсь пользователем OS Ubuntu. Собрал свой проект полностью из консоли OS. Суть проекта: консольное приложение на OpenJDK 14 делает следующее: Мониторит папку с указанным интервалом времени и собирает пути файлов, после этого отдает результат задаче на конвертацию файлов с PDF в JPG. Задача по конвертации файлов вычисляет региональные файлы по сумме SHA, после сего отфильтрованные файлы конвертируются в JPG по станично. Структура проекта: есть три скрипта по этапной сборке jar-файла: compilation.sh - компиляция классов build_art_jar.sh - сборка скомпилированных классов в jar-файл с внешними библиотеками running.sh - вспомогательный скрипт для проверки запуска папки: bin - хранит откомпилированные классы и внешние подключаемые библиотеки lib - хранит подключаемые библиотеки src - исходный код Но наткнулся на образовавшуюся проблему. Суть проблемы: В конечном собранном jar-файле есть включенные сторонние под лицензией Apache 2.0. jar-файл содержит манифест с указанием главного класса и путей к добавленным в jar-файл библиотекам. Когда я пытаюсь запустить jar-файл то запуск происходит, но не происходит не каких действий со стороны программы. но стоит мне рядом с запускаемым jar-файлом положить папку с внешними библиотеками, которые участвуют в работе программы, начинается процесс сканирования и конвертации файлов. Ссылка на проект: https://drive.google.com/file/d/1Fsmt5_KE_2J6TnJw-k-sLQjJ3WJ8qO0o/view?usp=sharing Есть подозрения что я что то не так сделал при формирования файла manifest.mf P.S. Пользоваться сборщиками проектов умею и можно не предлагать использовать их. Я хочу разобраться как все именно работает "под капотом". Вроде как поиск jar осуществляется относительно расположения манифеста. В данном случае он внутри jar в директории bin. То есть в вашем случае нужно использовать ../lib вместо lib Сейчас проверю и отпишусь о результате вам. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2020, 12:53 |
|
Сборка jar-файла. Проблема с добавленными сторонними библиотеками
|
|||
---|---|---|---|
#18+
Lelouch DimkaFriend mayton, 1) такой подход был выбран с целью в дальнейшем научится работать со спорными ситуациям(не на каждом проекте будет все идеально) 2)Не имею привычки захламлять свой git профиль некачественным контентом. К тому же, качественный ответ на вопрос, который я поднял, с головы ответят единицы, так как почти все сидят на сборщиках проектом. А меня интересует качественный результативный ответ. Когда я где бы то небыло отвечаю, стараюсь подходить с практики, то есть загрузить и "пощупать" проблему ручками. Я бы сказал что ваш подход некорректен даже в случае "без сборщика". В большинстве случаев в bin лежат .sh и прочие скрипты запуска, а все jar - в lib/jars. Хороший комментарий, обязательно сейчас переделаю. спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2020, 12:55 |
|
Сборка jar-файла. Проблема с добавленными сторонними библиотеками
|
|||
---|---|---|---|
#18+
DimkaFriend mayton, 1) такой подход был выбран с целью в дальнейшем научится работать со спорными ситуациям(не на каждом проекте будет все идеально) Ну... мне алгоритмически интересно как ты файлы различаешь? По дате? Или по UUID? Подобный подход был в *телекоме лет 20 назад. Я тогда только начинал работать и одно из решений по безопаснсости app сервера было в том что пошарили SMB папку в интернете и дали возможность пользовалям черезе tomcat туда чего-то кидать. А уже другой засекюреный app-сервер туда смотрел и забирал контент. Ну тоесть там решалась проблема такий асинхронной интеракции. Руководство очень боялось что трафик перегрузит app и так сделали. А у тебя по какой причине - просто было неозвучено. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2020, 12:56 |
|
Сборка jar-файла. Проблема с добавленными сторонними библиотеками
|
|||
---|---|---|---|
#18+
DimkaFriend mayton, 1) такой подход был выбран с целью в дальнейшем научится работать со спорными ситуациям(не на каждом проекте будет все идеально) 2)Не имею привычки захламлять свой git профиль некачественным контентом. К тому же, качественный ответ на вопрос, который я поднял, с головы ответят единицы, так как почти все сидят на сборщиках проектом. А меня интересует качественный результативный ответ. Когда я где бы то небыло отвечаю, стараюсь подходить с практики, то есть загрузить и "пощупать" проблему ручками. Да. Все сидят на сборщиках. Так как java не любит велосипедов. Не успеешь стать программистом при данном подходе)) Ваш кэп. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2020, 13:08 |
|
Сборка jar-файла. Проблема с добавленными сторонними библиотеками
|
|||
---|---|---|---|
#18+
mayton DimkaFriend mayton, 1) такой подход был выбран с целью в дальнейшем научится работать со спорными ситуациям(не на каждом проекте будет все идеально) Ну... мне алгоритмически интересно как ты файлы различаешь? По дате? Или по UUID? Подобный подход был в *телекоме лет 20 назад. Я тогда только начинал работать и одно из решений по безопаснсости app сервера было в том что пошарили SMB папку в интернете и дали возможность пользовалям черезе tomcat туда чего-то кидать. А уже другой засекюреный app-сервер туда смотрел и забирал контент. Ну тоесть там решалась проблема такий асинхронной интеракции. Руководство очень боялось что трафик перегрузит app и так сделали. А у тебя по какой причине - просто было неозвучено. Дата не дает уникальность(несколько файлов прилетят(обновятся) в одно время), UUID - больше подходит когда ведется строгое журналирование операций с применением бд(у меня этого в проекте нет) по этому я решил пойти самым простым путем для меня (на текущий момент) Грубо говоря: - есть папка(допустим на FTP) - следовательно есть вероятность того что что один и тот же файл может обновляться От сюда подход: - у файла есть такая замечательная штука как контрольная сумма(в своем случае использую SHA-256, так как у него сейчас безопасность из всех на уровне) - есть кэш приложения состоящий из таких контрольных сумм - если файл обновился и содержимое у него поменялось то изменилась и контрольная сумма - следовательно его надо заново конвертировать игнорируя перезапись уже конвертированных приложений ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2020, 13:08 |
|
Сборка jar-файла. Проблема с добавленными сторонними библиотеками
|
|||
---|---|---|---|
#18+
PetroNotC Sharp DimkaFriend mayton, 1) такой подход был выбран с целью в дальнейшем научится работать со спорными ситуациям(не на каждом проекте будет все идеально) 2)Не имею привычки захламлять свой git профиль некачественным контентом. К тому же, качественный ответ на вопрос, который я поднял, с головы ответят единицы, так как почти все сидят на сборщиках проектом. А меня интересует качественный результативный ответ. Когда я где бы то небыло отвечаю, стараюсь подходить с практики, то есть загрузить и "пощупать" проблему ручками. Да. Все сидят на сборщиках. Так как java не любит велосипедов. Не успеешь стать программистом при данном подходе)) Ваш кэп. Повторю еще раз, моя цель разобраться для себя с "капотом" ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2020, 13:13 |
|
Сборка jar-файла. Проблема с добавленными сторонними библиотеками
|
|||
---|---|---|---|
#18+
DimkaFriend P.S. Пользоваться сборщиками проектов умею и можно не предлагать использовать их. Я хочу разобраться как все именно работает "под капотом". Это?! ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2020, 15:27 |
|
Сборка jar-файла. Проблема с добавленными сторонними библиотеками
|
|||
---|---|---|---|
#18+
DimkaFriend Дата не дает уникальность(несколько файлов прилетят(обновятся) в одно время), UUID - больше подходит когда ведется строгое журналирование операций с применением бд(у меня этого в проекте нет) Все нормально она обеспечивает. Если рассмотреть границу 1-го сетевого интерфейса то IP-пакеты пересекают ее строго последовательно. Да... они конечно параллелятся на уровне твоих испольняющих тредов или асинков но существуюет момент времени когда мы ловим входящий пакет и присваиваем ему точное время systemNanoTime(). Как это реализовать - отдельный вопрос но сетевые интеракции здесь будут последовательны во времени. Как нарратив. Нет. UUID - вообще не про это. UUID - это будерброд (обычно) из трех источников энтропии. Случайное число. Текущее время с милисекундами. И некий идентификатор устойства (может быть MAC адрес сетевушки. Хотя есть разные формулы генерации UUID и то что я перечислил это просто удачный вариант формулы. Бывает что весь UUID - это псевдослучайное число из крипто-генератора ГПСЧ. К БД UUID не имеет отношения. БД возникли и строились долгие десятилетия не зная UUID. Реально UUID полезен только в распредлённых системах где узлы кластера слабо связаны между собой но необходимость в уникальности ключей есть. Обычно в JMS/MQ. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2020, 15:29 |
|
Сборка jar-файла. Проблема с добавленными сторонними библиотеками
|
|||
---|---|---|---|
#18+
mad_nazgul DimkaFriend P.S. Пользоваться сборщиками проектов умею и можно не предлагать использовать их. Я хочу разобраться как все именно работает "под капотом". Это?! Там все именно по сборщиком проектов. Так что не то что надо. Спасибо за участие. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2020, 21:10 |
|
Сборка jar-файла. Проблема с добавленными сторонними библиотеками
|
|||
---|---|---|---|
#18+
Lelouch, В общем я проверил по твоим комментариям и сильно запутался. Единственное что я понял что не правильно выстроил этапы сборки относительно файловых путей и файлов. Если не затруднит и найдешь время, можешь помочь примером приведя каталог к правильным зависимостям? А то чувствую что в голове каша полная и сам я эту кашу не раскручу. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2020, 21:14 |
|
Сборка jar-файла. Проблема с добавленными сторонними библиотеками
|
|||
---|---|---|---|
#18+
DimkaFriend Lelouch, Единственное что я понял что не правильно выстроил этапы сборки относительно файловых путей и файлов. Манифест, который включается в jar содержит некорректные пути к файлам библиотек. Некорректными они становятся потому, что манифест фактически находится в jar в директории bin. ClassPath вычисляется относительно этого jar, а не относительно директории запуска. Так понятнее? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2020, 13:13 |
|
Сборка jar-файла. Проблема с добавленными сторонними библиотеками
|
|||
---|---|---|---|
#18+
DimkaFriend, Ну что, разобрался, куда складывать либы? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2020, 05:46 |
|
Сборка jar-файла. Проблема с добавленными сторонними библиотеками
|
|||
---|---|---|---|
#18+
DimkaFriend mad_nazgul Там все именно по сборщиком проектов. Так что не то что надо. Спасибо за участие. Может тогда посмотреть исходники сборщиков и плагинов к ним? Там как бы все работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2020, 07:16 |
|
|
start [/forum/topic.php?fid=59&fpage=15&tid=2120790]: |
0ms |
get settings: |
8ms |
get forum list: |
5ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
39ms |
get topic data: |
27ms |
get forum data: |
1ms |
get page messages: |
440ms |
get tp. blocked users: |
2ms |
others: | 47ms |
total: | 573ms |
0 / 0 |