Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
St@nton
3 / 3 / 2
Регистрация: 04.01.2013
Сообщений: 72
1

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

30.01.2015, 04:43. Просмотров 1208. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.01.2015, 04:43
Ответы с готовыми решениями:

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

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

Не компилируется приложение. Failed to complete Gradle execution
Не могу скомпилировать приложение в Андроид Студио. При перезапуске появляется...

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

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

2
Gabberr
103 / 103 / 19
Регистрация: 13.10.2009
Сообщений: 404
30.01.2015, 10:15 2
bufImg = ImageIO.read(new File("src/main/resources/icon.jpg"));
это дичь полная так ресурсы выдергивать.
Все картинки в приложении должны лежать в папке res/drawable
Доступ к ним получать очень просто getResources().getDrawable(R.drawable.my_icon);
0
St@nton
3 / 3 / 2
Регистрация: 04.01.2013
Сообщений: 72
31.01.2015, 04:12  [ТС] 3
Дело в том, что у нас не андроид приложение. Обычное ява-приложение со 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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.01.2015, 04:12

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

Android Studio - не видит ресурсы. Бред какой-то
http://prntscr.com/7fr7xm Такая проблема, помогите

Приложение не видит интернет на планшете
Здравствуйте! Написал приложение на Java+Eclipse, которое делает Post-запросы...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru