Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/21: Рейтинг темы: голосов - 21, средняя оценка - 4.52
3 / 3 / 2
Регистрация: 04.01.2013
Сообщений: 73

Gradle и ресурсы - приложение не видит картинки

30.01.2015, 04:43. Показов 4358. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Написали адресную книгу. Имеет несколько дефолтных картинок.
Структура проекта:
src/main/java
src/main/java
src/main/java

Добавлено через 21 минуту
Всем привет. Написали адресную книгу. Имеет несколько дефолтных картинок.
Структура проекта:
src/main/java
src/main/resources
src/test/java
src/test/resources
Картинки лежат в корне папки src/main/resources и в src/test/resources. Gradle нормально строит проект и его можно запустить через gradle run в командной строке и всё прекрасно работает. Но если попытаться запустить созданный грейдлом батник из папки с дистрибутивом или вручную запустить джарник, то приложение запускается, но не грузит картинки. При этом, если открыть джарник, то картинки из src/main/resources в нём есть. Правда лежат сразу в корне. Не пойму в чём дело. В сети пишут, что ресурсы достаточно держать в src/main/resources и они будут грейдлом к джарнику подключаться. Так, вроде, и происходит, но приложение почему-то не видит картинки.
Предполагаю, что я не правильно настроил файл build.gradle
Вот так выглядит jar таск из файла build.gradle:
Java
1
2
3
4
5
6
7
8
9
10
11
12
jar {
    baseName = 'mvk'
 
    manifest {
        attributes 'Implementation-Title': 'ndeploy',
            'Implementation-Version': '0.1.0',
            'Built-By': System.getProperty('user.name'),
            'Built-Date': new Date(),
            'Built-JDK': System.getProperty('java.version'),
            'Main-Class': mainClassName
    }
}
Может кто сталкивался с подобным?

Добавлено через 23 часа 33 минуты
Может я накодил криво?
Вот так вызываются изображения в приложении:
Java
1
bufImg = ImageIO.read(new File("src/main/resources/icon.jpg"));
Как я уже говорил, если открыть джарник винраром, то картинки лежат сразу в корне, т.е. ни папки "resources", ни, тем более, папок src и main там нет. Может потому и не грузятся картинки? Или может надо было их не просто в папке resources хранить, а поместить их в подпапку или пакедж?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.01.2015, 04:43
Ответы с готовыми решениями:

Gradle объединить ресурсы для двух сборок
Гуру, посоветуйте! Делаю "заготовку" под проекты (отлаживаю технологию). В ней будет 6(!) видов сборки: debug free debug...

Можно ли просто перекинуть код, манифест и ресурсы из рабочей программы в заготовку-пустышку на Gradle
Наконец решил попробовать перевести часть своих проектов на Gradle. Работаю в студии. И возникли вопросы: 1) Можно ли просто...

Gradle не видит спрингбут плагин
Подскажите, пожалуйста, почему градл не находит зависимость ? plugins { id 'org.springframework.boot' version...

2
 Аватар для Gabberr
105 / 105 / 19
Регистрация: 13.10.2009
Сообщений: 406
30.01.2015, 10:15
bufImg = ImageIO.read(new File("src/main/resources/icon.jpg"));
это дичь полная так ресурсы выдергивать.
Все картинки в приложении должны лежать в папке res/drawable
Доступ к ним получать очень просто getResources().getDrawable(R.drawable.my _icon);
0
3 / 3 / 2
Регистрация: 04.01.2013
Сообщений: 73
31.01.2015, 04:12  [ТС]
Дело в том, что у нас не андроид приложение. Обычное ява-приложение со swing-gui. Я создал тему в этом разделе, потому что тут gradle гораздо чаще обсуждается. Как мне кажется проблема в настройке файла build.gradle, потому что грейдл строит и запускает приложение без проблем, а вот джарник, собранный самим же грейдлом, не корректно работает.

Добавлено через 12 часов 1 минуту

Нашёл решение.
Как я и предполагал, проблема была в настройке файла build.gradle Только нужно было не таск jar конфигугировать,

а таск applicationDistribution.

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

При такой структуре проекта:
src/main/java
src/main/resources
src/test/java
src/test/resources

и таком обращении к ресурсам:
bufImg = ImageIO.read(new File("src/main/resources/icon.jpg"));

нужно добавить следующее в файл build.gradle:

Java
1
2
3
4
5
6
7
8
9
10
11
task addImages {
    def images = file("$buildDir/resources/main")
    outputs.dir images
    doLast {
        images.mkdirs()
    }
}
 
applicationDistribution.from(addImages) {
    into "bin/src/main/resources"
}
Источник: Gradle Chapter 45
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.01.2015, 04:12
Помогаю со студенческими работами здесь

Не компилируется приложение. Failed to complete Gradle execution
Не могу скомпилировать приложение в Андроид Студио. При перезапуске появляется розовое сообщение (первый скрин), когда пытаюсь...

Gradle sync failed: Invalid Gradle JDK configuration found
Спустя пару часов все таки решил открыть тему. Intellij IDEA 15.0.2 Решил освоить Intellij. Создаю Gradle: Android Application....

Программа не видит ресурсы
Добрый день. Я добавил в проект визуал студии 2010 ресурс и вот такой код: class Program { static void...

Не запускается приложение: Gradle sync failed: A problem occurred configuring project ':app'
создаю новый проэкт. По видео курсам должен появиться шаблон смартфона, а у меня его нет. messages gradle sync >>Gradle...

Класс не видит ресурсы через контекст
Доброго вчера. Столкнулся с проблемой, может конечно слишком намудрил с классами но целиком переделывать логику пока не хочется. ...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru