Как встроить внешний jar и FOLDERS в один исполняемый файл jar с помощью IDE NetBeans - PullRequest
0 голосов
/ 20 января 2012

У меня есть проект Netbean со стандартной структурой папок.Зависимости проекта: guava.jar, папка с обычным текстовым файлом и папка с вложенными папками, каждая из которых содержит изображения, общим объемом более 20 КБ и размером 500 МБ.Стандартный процесс сборки выдает myjar.jar, который отлично работает вне ide, если он запускается в тех же папках, что и мои зависимости.Дерево папок выглядит примерно так:

root/
  image/
     folder1/
             image1.png
             image2.png
       folder2/
      ...
      ...
   txtfolder/
      file.txt
   lib/
      guava.jar
   myJar.jar

Развертывание вышеуказанной файловой структуры работает отлично, но требуется развернуть вышеупомянутую файловую структуру как ОДИН исполняемый файл jar, скажем myJarAll.jar (естественно, с размером почти 600 МБ).

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

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

Любая помощь, предложение или инструменты, которые могут решить эту проблему.

Спасибо

1 Ответ

0 голосов
/ 20 января 2012

Проще всего было бы иметь myJar.jar с META-INF / MANIFEST.MF, перечисляющим библиотечные файлы в lib.В папке lib кроме guava.jar вы можете создать myResources.jar, вытекающий из второго проекта.Или добавьте эти файлы в myJar.jar.(Среда IDE NetBeans уже поддерживает манифест.)

Неизбежно загружать файлы в виде ресурсов Java только для чтения на пути к классам в каталоге src (см. Вкладку Файлы в NetBeans).Поэтому вопрос в том, используете ли вы уже getClass().getResourceAsStream("/txtfolder/file.txt").

...