Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/21: Рейтинг темы: голосов - 21, средняя оценка - 4.71
 Аватар для Goongala
1022 / 562 / 185
Регистрация: 18.08.2013
Сообщений: 2,027
Записей в блоге: 2

Положить ресурсы в jar файл

10.08.2019, 17:35. Показов 4116. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здрасти. У меня такая проблема: у меня есть куча текстовых файлов и картинок, которые я использую в программе, посколько их замена в процессе использования не предполагается, я решил запихать их в jar, но после сборки программа их не видит
Собсна, пытаюсь прочитать я их таким образом
Java
1
2
3
4
5
6
7
8
9
10
11
12
        for (File f : new File(ResourceLoader.class.getResource("resources").getPath()).listFiles()) {
            if (imageFilter.accept(f))
                resources.put(removeExtension(f.getName()), new ImageIcon(f.getPath()));
            else if (textFilter.accept(f)) {
                sc = new Scanner(f, "UTF-8");
                while (sc.hasNextLine())
                    sb.append(sc.nextLine());
                
                resources.put(removeExtension(f.getName()), sb.toString());
                sb.delete(0, sb.length());
            }
        }
В интернетах прочёл, что правильнее использовать getResourceAsStream, но таким способ ж придётся каждый файл по отдельности читать (в смысле, отдельный код для каждого файла), а я бы хотел этого избежать

Подскажите что делать, плез, меня уже так задрало разбираться с этими клятыми jar файлами
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.08.2019, 17:35
Ответы с готовыми решениями:

Запаковать ВСЕ ресурсы в jar, а затем в exe
Здравствуйте, перелопатил кучу подобных тем, но так и не нашел ответа. Я использую IntelliJ IDEA, как в ней создать jar-фаил со всеми...

Groovy JavaFX. Не загружаются ресурсы вкомпилированные в jar модули
Дано: Многомодульное JavaFX + Groovy + Java приложение. GUI сделан на связке JavaFX + Groovy + WebView, часть контролов представляет из...

Ресурсы jar-файла
Добрый. Толком решения не нашел... Ситуация такая, есть LS агент (шедуль), внутри себя запускает java-агент (action list selection) через...

8
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
10.08.2019, 18:22
Цитата Сообщение от Gungala Посмотреть сообщение
правильнее использовать
Правильнее использовать мавен
1
 Аватар для Goongala
1022 / 562 / 185
Регистрация: 18.08.2013
Сообщений: 2,027
Записей в блоге: 2
10.08.2019, 18:44  [ТС]
Цитата Сообщение от iSmokeJC Посмотреть сообщение
Правильнее использовать мавен
Та эт чёт вроде оч сложное, мне прост нужно по-быстрому собрать проект, чтобы перед товарищами покрасоваться. Но спасибо за совет, возьмусь за изучение в будущем

Добавлено через 49 секунд
В этих же самых интернетах нашёл такое решение, рабочее, но чёт мне не нравится, как оно выглядит
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
        CodeSource src = ResourceLoader.class.getProtectionDomain().getCodeSource();
        if (src != null) {
            URL jar = src.getLocation();
            ZipInputStream zip = new ZipInputStream(jar.openStream());
            while (true) {
                ZipEntry e = zip.getNextEntry();
                if (e == null)
                    break;
                
                String name = e.getName();
                if (name.matches("com/milad/resources/.+")) {
                    name = name.replace("com/milad/", "");
                    InputStream is = ResourceLoader.class.getResourceAsStream(name);
                    
                    if (isTextFile(name)) {
                        sc = new Scanner(is, "UTF-8");
                        while (sc.hasNextLine())
                            sb.append(sc.nextLine());
 
                        resources.put(getKey(name), sb.toString());
                        sb.delete(0, sb.length());
                    } else if (isImageFile(name)) {
                        resources.put(getKey(name), new ImageIcon(ImageIO.read(is)));
                    }
                }
            }
            
            if (sc != null)
                sc.close();
        }
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
10.08.2019, 18:51
Цитата Сообщение от Gungala Посмотреть сообщение
Та эт чёт вроде оч сложное
Поверь мне, это не очень сложно. Для таких простых задач как собрать исполняемый джарник с ресурсами и подтянуть по зависимостям нужные либы, тебе будет достаточно покурить какой-нибудь простой мануал буквально 1 вечерок. Потом от мавена за уши не оттянешь.
Меня мой сэнсэй с младых ногтей приучил к мавену (огромное ему спасибо за это), при этом приговаривал - я даже хэлловорлды с ним пишу

Добавлено через 1 минуту
Кстати, он массовал меня написать мануал по мавену для начинающих сюда, на форум, но этих мануалов столько, что я не стал...

Добавлено через 1 минуту
Цитата Сообщение от Gungala Посмотреть сообщение
но чёт мне не нравится, как оно выглядит
А с мавеном будет красота - глаз не оторвать!
0
 Аватар для Goongala
1022 / 562 / 185
Регистрация: 18.08.2013
Сообщений: 2,027
Записей в блоге: 2
10.08.2019, 19:00  [ТС]
Цитата Сообщение от iSmokeJC Посмотреть сообщение
А с мавеном будет красота - глаз не оторвать!
Акей, вы меня убедили, в ближайшее время этим займусь

Цитата Сообщение от iSmokeJC Посмотреть сообщение
Кстати, он массовал меня написать мануал по мавену для начинающих сюда, на форум, но этих мануалов столько, что я не стал...
Мне кажется, что всё-таки стоит написать. Новички будут заходить на форум, тема про мавен будет маячить у них перед глазами и они быстрее будут приступать к изучению. Я вот узнал про мавен только сегодня, спустя пару месяцев с того момента, как начал изучать Java
0
 Аватар для Goongala
1022 / 562 / 185
Регистрация: 18.08.2013
Сообщений: 2,027
Записей в блоге: 2
31.08.2019, 11:59  [ТС]
Прошу прощения, конечно, но вот я вроде как освоил мавен на базовом уровне и чёт вообще не могу понять как он может решить проблему. Он же вроде как просто закидывает ресурсы в jar, а непосредственно во время исполнения программы он ж помочь не может
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
31.08.2019, 12:29
мавен правильно собирает все. В коде соответственно this.getClass().getResource("foo.txt");
1
 Аватар для Goongala
1022 / 562 / 185
Регистрация: 18.08.2013
Сообщений: 2,027
Записей в блоге: 2
31.08.2019, 12:39  [ТС]
xoraxax, ох, акей. Прост я ожидал какой-нибудь магии. Мавен канеш всё равно классная штука, но не такая волшебная, как я себе навоображал :D
0
04.09.2019, 23:45

Не по теме:

Цитата Сообщение от Gungala Посмотреть сообщение
Мавен канеш всё равно классная штука, но не такая волшебная, как я себе навоображал :D
Если собираешься идти работать куда-нибудь java-разработчиком, знание какого-либо сборщика зачастую является обязательным требованием. А вот будет это maven, gradle или какой-нибудь ant - уже зависит от компании

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.09.2019, 23:45
Помогаю со студенческими работами здесь

Открыть jar файл (minecraft.jar) посредством VB.NET
Всем привет! Вообщем, как открыть файл minecraft.jar с помощью vb.net ? Я совсем не представляю как это делается, как запускается java с...

Как в java создать исполн jar файл для выполнения с целью, что бы потом код этого jar нельзя было использовать
(Новичок) Добрый день. Подскажи пожалуйста, как быть. Как создать jar файл что бы потом его код нельзя было просматривать, а то я по...

Положить Файл На Сервер
Товарищи, добрый день! Возникла проблема, взываю к помощи. Есть, значит, лотусная база, предназначенная для работы через броузер....

Python: куда положить .py файл на сервере?
Всем привет! Я чайник в python, мой его хостинг поддрживает, но я не знаю как запускать программу. в cmd hello world я еще осилил,...

Не читается файл, лежащий в той же папке, что и jar-файл программы
Пытаюсь прочитать файл с настройками программы. public void loadSettingsFromFile(String fileName){ File file = new File(fileName); ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru