Форум программистов, компьютерный форум, киберфорум
Java: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/29: Рейтинг темы: голосов - 29, средняя оценка - 4.83
 Аватар для niesoft
16 / 9 / 3
Регистрация: 15.04.2009
Сообщений: 29

Жадный JAR не показывает картинки

10.02.2016, 06:14. Показов 5698. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую!
Обойдёмся без прелюдий ибо всю ночь сношаюсь с java.
А именно:
- набросал проект используя javafx.scene.web.WebView - в этом самом webview html код, а в стилях прописаны пути к "картинкам":

к примеру:

Java
1
ru.niesoft.jautomount.Main.class.getResource("ssh.svg")
запуская debug картинки на месте, но стоит мне всё запаковать в jar так картинки куда-то деваются.

Java
1
Main.class.getResource("ssh.svg")
- тоже пробовал, безрезультатно

при этом твориться сие безобразие не только внутри Webview но и в:

Java
1
frame.setIconImage(Toolkit.getDefaultToolkit().getImage((ru.niesoft.jautomount.Main.class.getResource("logo.png").toExternalForm())));
т.е иконку для приложения тоже поставить не могу (вернее внутри Debug всё работает ровно так как нужно, но не в jar)....

использую Intellij IDEA, собираю JAR не использую maven или ANT

буду рад если объясните что не так то ...

проект целиком: https://gist.github.com/niesof... _main-java
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.02.2016, 06:14
Ответы с готовыми решениями:

Картинки в jar файле
Как правильно создать jar файл что бы с него подгружались картинки?

Как в апплете достать картинки из jar?
Помогите, пиплы, плиз!!! Заварачиваю апплет в jar-файл. Туда же заворачиваю картинки. А вот добраться до них не могу. Если не жалко,...

Программа не берет картинки с .jar архива.
Java-приложение в jar-файле... как туда ГИФы не запихиваю - не берёт из ЖАРа... Только если ВНЕ архива. Можно-ли как-то решить эту...

2
 Аватар для RedPatrick
143 / 115 / 61
Регистрация: 13.01.2016
Сообщений: 305
10.02.2016, 08:39
У меня была похожая проблема, попробуйте здесь

https://www.cyberforum.ru/java... 44119.html

Все зависит от места хранения картинок.
0
 Аватар для niesoft
16 / 9 / 3
Регистрация: 15.04.2009
Сообщений: 29
10.02.2016, 19:09  [ТС]
RedPatrick, в том то и дело, вы (по ссылке) пытались получить изображения из папки - которая не входит в jar у меня же внутри jar всё на месте, все изображения лежат рядышком с Main.class и тем не менее картинки не подгружаются...

Добавлено через 33 минуты
Дополню:

Когда html код вызывается я пытаюсь прописать url картинок для кнопок:

Java
1
".mount { background:url(" + ru.niesoft.jautomount.Main.class.getResource("mm.svg") + ") no-repeat center center; background-size:auto 12px; width:24px; height:24px; cursor: pointer; }\n"
После запуска Debug я вывожу сгенерированный html код со всеми путями и вижу на этом месте такой вот адрес:

CSS
1
.mount { background:url(file:/home/niesoft/IdeaProjects/jAutoMount/out/production/jAutoMount/ru/niesoft/jautomount/mm.svg) no-repeat center center; background-size:auto 12px; width:24px; height:24px; cursor: pointer; }
Но после того как я запускаю его из jar файла на этом же самом месте я вижу:

CSS
1
.mount { background:url(jar:file:/home/niesoft/IdeaProjects/jAutoMount/out/artifacts/jAutoMount_jar/jAutoMount.jar!/ru/niesoft/jautomount/mm.svg) no-repeat center center; background-size:auto 12px; width:24px; height:24px; cursor: pointer; }
не уверен что WebView в состоянии отработать такого вида url, неужели все копируют в таком случае картинки из jar файла на локальный диск??

Добавлено через 1 час 36 минут
Эх.... избаловала меня в своё время Visual Studio.... никакой возни с публикацией проекта... нажал Debug и в папке уже готовая к переносу на другой ПК программа...
С Java всё абсолютно не так...

В общем из-за чего весь сыр-бор... мне по работе необходимо постоянно шнырять по ftp и ssh... удобнее это делать когда удаленный диск смонтирован в качестве диска.
Для этого я пользовался командами sshfs и curlftpfs... решил что быстрее и удобнее будет делать это одной кнопкой.
За 2 часа набросал то что мне нужно (и почти 12 часов пытался всё это запустить из jar файла)
В итоге вот такой вот апплет: https://gist.github.com/niesof... omount-jar после первого запуска в папке /home/user/.config/jAutoMount/ появится файл list.txt
в нем ручками вписываем команды для монтирования:

JSON
1
[{"command":"sshfs funny@192.168.0.79:/", "name":"Notebook", "password":"123456"}]
- формат JSON

JSON
1
2
3
4
5
[
{"command":"sshfs funny@192.168.0.79:/", "name":"Notebook", "password":"123456"},
{"command":"sshfs funny@192.168.0.59:/", "name":"Notebook2", "password":"123456"},
{"command":"curlftpfs host1327187:c09b24c5@ftp56.hostland.ru", "name":"Hostlandgovno", "password":"qpkS23sko7j"}
]
- в command отсутствуют параметры указывающий КУДА монтировать, вместо этого диск монтируется в папку /home/user/"name" - где name указанный в json параметр... т.е в случае если название : .... "name":"Notebook" ..... - то диск смонтируется в папку /home/user/Notebook

так что можно к name добавлять некий префикс что бы держать все смонтированные разделы в одном месте к примеру .... "name":"allmount/Notebook" .....

тут тоже непонятный баг (если монтировать в корень пользовательской папки - то в файловом менеджере появляется быстрая ссылка до раздела, а если смонтировать диск куда-то в /.config/jAutoMount/Notebook - то быстрой ссылки нет)

внутри программы у каждой строки всего 2 кнопки - монтировать и размонтировать.
при этом нужно будет ввести пароль (пароль автоматом копируется в буфер обмена при нажатии кнопки монтирования)
размонтировать можно только будучи под root (можно запустить программу из терминала)

sudo java -jar путь_к_jautomount.jar

так вот... на чем я ещё запнулся...
если посылать команду в терминал через ProcessBuilder к примеру sshfs - то появляется GUIёвое окошко с просьбой ввести пароль, в случае с командой umount такое окошко не появляется =(
ковыряния в файле etc/sudoers - ни к чему не привели...

Добавлено через 38 минут
ох... не добавил исключение на случай когда файл list.txt пустой... так что запуск будет с ошибкой до тех пор пока не впишите в list.txt строки

Добавлено через 38 минут
мда.... похоже мне ещё курить и курить мануалы по джаве...

https://gist.github.com/niesof... omount-jar
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.02.2016, 19:09
Помогаю со студенческими работами здесь

Как при создании Jar файла отвязать от местоположения картинки?
Здравствуйте. Исходный файл содержит следующий код: iconTr = new TrayIcon(ImageIO.read(new File("Ikonka.png")), "Check...

Не показывает картинки в swing
Пользуясь intellij idea, я написал не большое графическое приложение с картинками. Проблема в том, что в среде разработки все работает...

Не показывает картинки - версия 3.4.2
Не показывает картинки не в админ панели, не на сайте, даже при установки стандартных тем все равно нет картинок. Что делать?

При поиске Google не показывает картинки
При поиске по картинкам вместо них серые прямоугольники. Что за беда?

модуль слайдшоу не показывает картинки
Добрый день! Возникла маленькая проблемка. Пишу сайт на joomla 1.5, легкая визиточка. Нужно поставить Autson_Slideshow, на остальных...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru