Я хочу опубликовать приложение Java GUI в Windows 7. Это приложение использует инструментарий Swing и не нуждается в собственном коде. Приложение устанавливается с помощью NSIS установщик. Я хочу, чтобы интегрировать это приложение в Windows 7 как можно лучше. Это значит:
- при запуске приложения должно быть возможно закрепить приложение на панели задач.
- должно быть возможно свяжите файлы данных с приложением, чтобы Windows открыла эти файлы с моим приложением.
- должен автоматически работать с 32-разрядной средой выполнения Java и с 64-разрядной средой выполнения Java. Поэтому, когда пользователь удаляет 32-битную Java и устанавливает 64-битную Java (или наоборот), мое приложение должно работать.
- должна поддерживать настройку больших шрифтов Windows. Я не очень понимаю эту функцию. Я просто знаю, что некоторые приложения полностью игнорируют его, другие (Например, Google Chrome) масштабируются по пикселям (выглядит очень уродливо), а другие поддерживают его, просто используя большие шрифты по назначению (это то, что я хочу, и обычно это работает. Только решение WinRun4J, упомянутое ниже,не работает с ним).
проверенные решения
WinRun4J
WinRun4j является EXE-файл, который запускает приложение Java. Поскольку приложение не развивает новый процесс Java Windows думает, что EXE-файл является приложение. Таким образом, нет проблем с панелью задач. Ассоциации файлов работает, потому что файлы могут быть просто связаны с файлом EXE.
#1 Установка пакетов и первый запуск программы | Java для начинающих
проблемы:
- не поддерживает большие шрифты. Вместо этого окно приложения масштабируется пикселями (например, Google Chrome).
- в зависимости от установленной JRE должны использоваться два разных EXE-файла. Поэтому, когда 64-битный JRE установлен, приложение должно быть запущено с 64-битным EXE-файлом. Когда установлены 32-битные JRE ins, необходимо использовать другой EXE. Это не удобно, потому что пользователь не понимает, почему он должен использовать 32-разрядный EXE в 64-разрядной операционной системе, когда установлен только 32-разрядный JRE.
Launch4J
Launch4J создает 32-битный EXE, который запускает внешний процесс Java для запуска приложения Java. Так что в отличие от WinRun4J он также может начать 64 бит Ява.
проблемы:
- не удается закрепить приложение на панели задач.
- System.out.println не будет печатать в консоль, если headerType=»gui» , независимо от того, запускается ли приложение с консоли.
JAR
в Windows вы можете просто дважды щелкнуть файл JAR, чтобы запустить приложение. Установленная JRE не имеет значения, просто работает. Но.
проблемы:
- приложение не может быть прикреплено к панели задач.
- не удается создать ярлык в меню «Пуск».
- не удается связать файлы с файлом JAR.
BAT / CMD
простой пакетный файл, как это может быть использовано для запуска приложения:
Запуск простого java приложения на удаленном сервере.
ярлык может быть создан для этого пакетного файла, чтобы установить пользовательский икона.
проблемы:
- при запуске приложения появляется окно DOS.
- пакетный файл не знает, где javaw.расположен исполняемый файл. В зависимости от того, какая версия java (32 или 64 бит) установлена, она может быть расположена в c:windowssyswow64 вместо этого и Windows не перенаправляет этот вызов из пакетных файлов автоматически. С помощью JAVA_HOME переменная среды также не работает, потому что Java не устанавливает это автоматически.
- при связывании файлов с пакетным файлом не может быть установлен пользовательский значок.
- поддержка панели задач работает неправильно. Приложение может быть прикреплено к нему, когда пакетный файл запускается вручную, но при двойном щелчке связанного файла вместо этого он не работает.
ярлык
вместо использования пакетного файла можно создать только ярлык для запуска приложения. Он ссылается на эту команду: c:windowssystem32javaw.exe -jar «c:program filesmyappmyapp.jar» . Windows автоматически перенаправляет этот вызов в каталог SysWOW64, если установлен 32-разрядный Java JRE.
проблемы:
- невозможно связать файлы с ним, потому что Windows принимает только файлы EXE/COM/PIF/BAT / CMD в качестве целей ассоциации. Файлы LNK не работают.
вопрос
есть ли другое решение, которое удовлетворяет всем требованиям сверху? Или есть какие-то трюки, чтобы решить проблемы с упомянутые решения?
решение
после решения проблемы закрепления панели задач с помощью Launch4j выглядит как лучшее решение. Launch4j можно легко интегрировать в проект Maven (с этой или этой плагин), конфигурация довольно проста, и все работает из коробки, кроме закрепления панели задач. Для закрепления панели задач приложение Java должно установить appModelUserId, как описано в ответе на этот вопрос.
кроме того, приложение Java должно быть установлено установщиком, который должен по крайней мере установить один ярлык, указывающий на EXE. Этот ярлык также должен содержать appModelUserId. С NSIS это можно сделать с помощью плагин WinShell и такая конфигурация:
CreateShortCut «$SMPROGRAMSMyApp.lnk» «$INSTDIRmyapp.exe» «» «$INSTDIRmyapp.exe» 0 SW_SHOWNORMAL WinShell::SetLnkAUMI «$SMProgramsMyApp.lnk» «MyAppModelUserId»
по какой-то неизвестной причине этот ярлык должен существовать. Вы не должны использовать его. Вы можете дважды щелкнуть EXE и панель задач-закрепление все еще работает. Вы можно даже создать ярлык в некоторой подпапке папки приложения.
Панель задач-закрепление перестает работать, когда удаляется последний ярлык EXE-файла.
автор: Community
5 ответов
Попробуйте Launch4j ( http://launch4j.sourceforge.net/), его простая банка для exe-обертки (на самом деле упаковка банки необязательна). Он должен решить ваши требования к значку и панели задач. Его также можно найти в установленных JRE (некоторые настраиваемые правила). Проблема шрифта я не совсем понимаю, Swing должен автоматически использовать шрифты в зависимости от настроек Windows, Если вы как-то не перезаписываете это в параметрах JRE или в коде.
автор: Durandal
Java Web Start — Я бы не рассматривал распространение приложения каким-либо другим способом в эти дни.
пользователь должен иметь хотя бы J2SE 1.4; если вашим приложениям нужна более поздняя версия, Web Start автоматически загрузит соответствующую JRE.
посмотреть у jnlp ссылка для тегов для интеграции рабочего стола ( shortcut и offline-allowed ), и ассоциации файлов ( association ). Однако они поддерживаются только в WS 1.5.
автор: Dmitri
Я лично использую Launch4j (через maven с мавен-launch4j-плагин чтобы быть еще более точным), и я реализую управление системным Треем из своего приложения. (См. http://java.sun.com/developer/technicalArticles/J2SE/Desktop/javase6/systemtray/).
автор: Yanflea
У меня был хороший успех с WinRun4J в целом, но я не очень много сделал со шрифтами, поэтому я признаюсь, что не уверен, что понимаю, почему у вас есть проблема, которую вы описываете там.
из того, что вы описываете, однако, похоже, что у вас есть очень конкретные требования от Java native launcher. Почему бы просто не написать свой собственный? Вы можете начать с чего-то вроде WinRun4J (который является открытым исходным кодом, лицензированным под Eclipse CPL) и просто изменить его на свой по необходимости.
кроме того, вы можете посмотреть на собственные пусковые установки, используемые другими программами. Пусковые установки Eclipse и NetBeans работают довольно хорошо, и оба с открытым исходным кодом. Вы могли бы быть в состоянии адаптировать один из них довольно легко, а также.
автор: Daniel Pryden
в стороне, также проверьте новую функцию, чтобы ваше приложение в tooltray / systemtray:
Oracle предоставляет учебник о том, как использовать панели задач.
Это связано с Java SE 6. меня тоже моталка, что может быть в новой версии Java 7?
Источник: askdev.ru
Записки программиста
Запуск приложений на Java/Scala без установленной JVM
Как мы с вами ранее уже выясняли, под JVM можно писать вполне себе сносные десктопные приложения. Тут, надо признать, возникают и некоторые тонкости, например, если вам захочется отобразить иконку в трее. К счастью, тонкости проявляются только под Linux.
В конце концов, кто же в наше время пользуется на десктопе Linux, пфф… Впрочем, пользователи самой популярной десктопной ОС столкнутся с другой проблемой, а именно необходимостью устанавливать какую-то там ЖэВэЭм. А она непонятно где обитает, весит дофига, а после установки потом еще в трее зависает, обновлений каких-то хочет, мутная штука! Однако пользователей можно заставить страдать чуть меньше обычного, и далее будет показано, как.
Секрет, как вы уже могли догадаться, заключается в том, чтобы встроить JVM в само приложение. Получить такую «встраиваемую» JVM можно несколькими способами. Например, в этой заметке рассказывается, как собрать ее своими силами из JVM с сайта Oracle. А по этой ссылке доступна для скачивания готовая сборка, называется jPortable. Про последнюю вроде как везде очень хорошо отзываются, ею и воспользуемся.
Распаковываем, все каталоги кроме bin и lib вроде как можно смело удалить. Рядом c каталогом bin кладем standalone jar-ник с нашим приложением. Для экспериментов я использовал jar’ник, собранный из проекта к заметке Краткий обзор GUI-фреймворков для Java и мое первое простенькое GUI-приложение на Swing. Рядом кладем run.bat незамысловатого содержания:
Запускаем и, о чудо, все работает! В реальном проекте вместо bat-файла вы, скорее всего, захотите написать свой небольшой exe-лаунчер с красивой икнокой или создать ярлык на рабочем столе. Ярлык лучше, так как, насколько я помню, некоторые антивирусы и фаерволы обожают показывать страшные сообщения в случаях, когда одна программа (ваш лаунчер) запускает другую (java.exe).
Будучи упакованным в самораспаковывающийся 7-zip архив с максимальной степень сжатия все это хозяйство весит 32 Мб. Многовато, прямо скажем, но и не так, чтобы невероятно много. В наши дни пользователи и не столько качают. В крайнем случае вы можете попытаться выкинуть лишние файлы из каталогов bin и lib, но в этом случае нужно хорошо понимать, что вы делаете.
Мне кажется, если вы пишите достаточно серьезное приложение, оно и само по себе будет весить немало. Пользователю нет особой разницы, качать 100 Мб или 132 Мб, особенно, если программа решает действительно актуальную для него задачу. Для сравнения, архив с IntelliJ IDEA 14.1 весит 183 Мб, и всем нормально.
Сборка красивого инстяллятора (разумеется, использующего алгоритм сжатия LZMA, чтобы добиться такой же степени сжатия, как в 7-zip!), к сожалению, выходит за рамки данного поста. В Linux озвученной в заметке проблемы не возникает, так как Java можно указать прямо в зависимостях к deb-пакету. С маками не работаю, так что с вас, дорогие читатели, рассказ в комментариях, как там все устроено.
В рамках поднятой темы нельзя также не отметить существование решений, позволяющих получать из Java-кода нативные приложения, вообще не требующие никакой JVM. В частности, есть такая интересная штука под названием Excelsior JET, но цена у нее довольно кусачая. Специально для разработки под iOS есть решение под названием RoboVM.
А вставала ли перед вами задача встраивать JVM в ваше приложение и если да, то каким образом вы ее решали? И кстати, не знает ли кто-нибудь, насколько лицензия JVM вообще позволяет такое использование виртуальной машины, в частности, в коммерческих проектах?
Дополнение: В комментариях подсказывают, что также есть официальный пакеджер от Oracle. Размер инсталлятора получается от 39 Мб. Также советуют попробовать бесплатный Excelsior Installer. А тут можно прочитать небольшой пост про RoboVM на русском языке.
Вы можете прислать свой комментарий мне на почту, или воспользоваться комментариями в Telegram-группе.
Источник: eax.me
Что за файлы с расширением jar и чем их открыть
Пользователи компьютеров и смартфонов рано или поздно сталкиваются с расширением jar. Но открыть файлы jar стандартным способом не получится, для этого необходимо специальное программное обеспечение.
Jar — что за файл?
Java Archive, от англ. сокращенно jar — это активный архивный формат, который содержит исполняемый файл, написанный на компьютерном языке Java. Он относится к числу компьютерных архивов, которые открываются во всех программных оболочках Windows, Linux, Mac OS X и Android c помощью браузеров. Также активные исполняемые java-архивы могут применяться в работе приложений для простых мобильных телефонов, под управлением предустановленных заводских ОС.
Jar file обычно используется для сжатия и хранения тематических оформлений для программного обеспечения (ПО) и расширений к ним. Принадлежит к архивам типа Zip. Сжатый архив может содержать программные файлы: CLASS, ресурсное ПО, META-INF/Manifest.Mf.
Открывается расширение при помощи программ:
- в ОС Windows: Corel WinZip 15, AllZip, Izarc, WinRar, ZipZag, TotalСommander 9.22, Java Development Kit, 7-zip и другими популярными архиваторами;
- вОСLinux: JRE, Eclipse;
- вAndroid: AndroZip, Zarchiver, EsExplorer, RaR For Android, B1 Archiver;
- вМасOS: Gzip, Bzip2, Tar, Apple Jar;
- в других программных оболочках: JRE, любой браузер.
Как распаковать Jar?
Практически любой архиватор может открывать подобные файлы, рассмотрим самые популярные.
WinRAR
В приложении WinRAR процедура следующая:
- Открываем программу. Во вкладке меню «файл» находим подменю «открыть архив».
- Среди файлов на ПК ищем нужный ява-архив и мышкой выбираем его. Нажимаем на кнопку «открыть».
- В открытом окне выделяем все элементы и нажимаем на них правой кнопкой мыши, в появившемся меню выбираем вкладку «извлечь в указанную папку».
- В новом окне выбираем путь для распаковки и жмем «ОК».
Что такое FYI, BTW и расшифровка других популярных аббревиатур в переписке
7-Zip
Для архиватора 7-Zip используем такую инструкцию:
- Открываем окно архиватора. Находим нужный файл, выбираем его левой кнопкой мыши и нажимаем кнопку «извлечь» на панели вверху.
- Указываем путь для извлечения данных и нажимаем «ОК».
Total Commander
В популярном файловом менеджере Total Commander нужно придерживаться следующего алгоритма:
- Запускаем приложение.
- Правой клавишей мыши нажимаем на файл, в меню выбираем «извлечь в текущую папку» или «извлечь». Если выбран второй вариант, то, как и в случае с WinRAR необходимо указать папку для распаковывания.
Как запустить jar?
Рассмотрим на примере различных приложений, как запустить файлы джар в Windows 7, 8, 10.
Kemulator
Программа-эмулятор игр для мобильных телефонов, использующих расширение jar. В Kemulator для открытия jar на компьютере нужно выполнить следующее:
- Устанавливаем эмулятор.
- Запускаем его.
- В разделе «Midlet» выбрать «load jar…».
- Выбираем исполняемый архив и нажимаем на него.
MidPx
MidPx — еще один эмулятор для запуска ява-архивов на компьютере:
- Инсталлируем приложение в Windows.
- Открываем интернет-браузер и выбираем элемент для запуска, нажимаем по нему правой кнопкой мыши. Во всплывающем меню выберем вкладку «Link to MidPx».
Sjboy Emulator
Альтернативный эмулятор мобильного телефона. В Sjboy Emulator процедура открытия jar следующая:
- Устанавливаем приложение.
- Нажимаем правой кнопкой мыши на jar, в открывшемся новом окне выбираем вкладку «Open with Sjboy Emulator».
Как запустить через командную строку?
Перед запуском командной строки в ОС Windows необходимо прописать настройки для работы с элементами ява. Для этого нажмем правой клавишей мышки на «Мой компьютер», выберем вкладку «Свойства». Далее заходим в «Дополнительные параметры системы» — «Переменные среды».
Лучшие доступные по цене фаблеты 2015 года
Во вкладке «Системные переменные» надо создать переменную «JAVA_HOME» со значением «» (например, «D:travel2Ukrainejdkbin»). Эту же ссылку необходимо вписать в уже существующую новую переменную Path после «;». После проделанных операций все сохраняется и запускается командная строка.
В консоли делаем замену директории с jar прописав команду CHDIR:
C:Usersимя_пользователя> CHDIRC:Usersимя_пользователяDocumentstravel2Ukrainedist
Чтобы запустить ява-приложение вводим «java -jar ». Нажимаем клавишу «Enter».
Что делать, если не запускается jar файл?
Если скомпилированный элемент не запускается, то программисты рекомендуют сделать следующее:
- Открыть ява-архив при помощи архиватора.
- Затем открыть файл «MANIFEST».
- Добавить туда строку «Main-Class: «Название главного класса, содержащего Main (без Class в конце)»», в конце обязательно должно быть 2 перевода строки.
- Сохранить обновленный «MANIFEST».
Источник: composs.ru