Преобразование JApplet в .exe

У меня есть небольшой (Swing) JApplet, который отлично работает в Eclipse: он содержит метку, две кнопки и меню с минимальным пользовательским взаимодействием (при выборе пункта меню, цвета контейнера меняются). Я преобразовал это в .jar:

  • Я щелкнул правой кнопкой мыши имя класса (Sw3.java)
  • Выбранный «Экспорт», затем «Java», затем «JAR-файл»
  • Затем я выбрал текущее имя проекта как ресурс для экспорта, дважды щелкнув по нему «пакет по умолчанию», выбрал нужное имя класса из списка классов справа (Sw3.java)
  • Затем я отметил «Экспорт сгенерированных файлов классов и ресурсов», выбрал пункт назначения экспорта как «JAR-файл» и поместил его в «Документы» под названием «Sw3.jar». Я также выбрал «Сжатие содержимого файла JAR».
  • На следующем экране я проверил «Экспорт файла класса с ошибками компиляции» и «Экспорт файла класса с предупреждениями компиляции»

Я слышал, что правильный способ получить exe-файл - преобразовать .jar в .exe, поэтому я использовал приложение Launch4j с ранее полученным .jar:

  • На панели «Основные»: указан файл OUTPUT FILE: C: \ Users \ jerry \ Documents \ Sw3.exe и файл JAR: C: \ Users \ jerry \ Documents \ Sw3.jar.
  • Приоритет процесса NORMAL
  • Тип заголовка: GUI
  • MIN JRE Версия: 1.0.0
  • Я нажал «колесо» и выбрал Project.xml и получил успешное подтверждение.

У меня установлен JRE, поэтому .exe должен работать, но он не работает. Что я сделал не так? Я бы начал с изучения того, правильно ли получен .JAR, является ли это хорошим подходом и как бы я это проверить? Спасибо!

PS: После того, как я посоветовал использовать JFrame вместо JApplet, я сделал это и до сих пор ничего не происходит, когда я дважды нажимаю на .exe, чтобы открыть его. Это заставляет меня подозревать, что что-то не так в тех шагах, которые я описал.

1
nl ja de
Спасибо, PhiLho, я использовал JApplet, потому что я новичок, практикую Swing и более комфортно с этим, чем с JFrame. Тем не менее, я добавил JFrame, как советовал martijno ниже и себя, и у меня все еще есть та же проблема.
добавлено автор Sam, источник
Благодаря PhiLo я следил за этим советом, выбрал второй пример из этой ссылки и просто добавил несколько дополнительных строк и компонентов (например, ярлык) jsong.ba.ttu.edu/ISQS2341/Fall05/Lecture08_Example.pdf . Это не сработало, поэтому я попробовал еще раз с более сложным примером JFrame, примером MyFrame из той же ссылки. Оба работают отлично, когда я запускаю их из Eclipse, так что должно быть что-то не так в шагах, которые я представил в исходном вопросе выше?
добавлено автор Sam, источник
Почему вы создали JApplet вместо простого JFrame? Апплеты - это особые звери, и в некоторых случаях их можно запускать на рабочем столе, их больше заставляют размещать на веб-странице (и это, по-видимому, выходит из моды).
добавлено автор PhiLho, источник
Я думал об использовании чистого JFrame. Я просто не знаю, может ли Launch4j обрабатывать JApplet (поиск в Google возвращает нулевое появление, что редко!). Вы можете попробовать запустить exe из командной строки с помощью опции - l4j-debug , возможно, вы получите соответствующее сообщение об ошибке.
добавлено автор PhiLho, источник

1 ответы

Добавьте основной метод в ваш апплет, чтобы поместить его внутри JFrame :

public static void main(String[] arg) {
  JFrame frame = new JFrame();
  JApplet applet = new Sw3();
  frame.getContentPane().add(applet);
  frame.pack();
  frame.setVisible(true);
  applet.init();
  applet.start();
}

В диалоговом окне экспорта JAR Eclipse после экрана «Параметры упаковки JAR» (тот, который содержит файлы «Экспорт файлов классов с ошибками и/или предупреждениями», которые вы упомянули выше), нажмите next (а не отделка ). Выберите «Сгенерировать файл манифеста» и введите полное имя класса (т. Е. Включая пакет) вашего основного класса:

Generate manifest with Main-class attribute from Eclipse JAR export

2
добавлено
Спасибо, Мартиньо, я добавил основной метод с помощью JApplet applet = new Sw3 (); приспособиться к моей ситуации и снова пройти все шаги, как это было представлено в моем первоначальном вопросе; однако я все еще не вижу никаких изменений, нет. Если я дважды щелкнул .exe, чтобы открыть его, ничего не происходит.
добавлено автор Sam, источник
Я думаю, что я делаю это на 3-м шаге, но не уверен, что это то, о чем вы говорите: [Я выбрал текущее имя проекта как ресурс для экспорта, дважды щелкнул по нему «пакет по умолчанию», выбрал желаемое имя класса (класс JFrame) из списка классов справа.] На последнем этапе экспорта JAR я также увидел «Определить манифест», выбранный по умолчанию, и оставил его как таковой. «Использовать существующий манифест из рабочего пространства» - это второй вариант. Возможно, JAR генерируется неправильно.
добавлено автор Sam, источник
О, мой, это сработало, я должен помнить этот шаг отныне и добавить его в процедуру, большое спасибо, я действительно счастлив сейчас! Ты потрясающий!
добавлено автор Sam, источник
Вы указываете класс, который содержит основной метод (ваш класс апплета, возможно) в манифесте jar?
добавлено автор martijno, источник
Редактирование моего ответа ... зависание.
добавлено автор martijno, источник
pro.jvm
pro.jvm
3 503 участник(ов)

Сообщество разработчиков Java Scala Kotlin Groovy Clojure Чат для нач-их: @javastart Наш сайт: projvm.com projvm.ru Наш канал: @proJVM Вакансии: @jvmjobs Конфы: @jvmconf

Java & Co
Java & Co
2 370 участник(ов)

Можно обсуждать с матом и без всё, что касается жабы, вплоть до холиваров. НЕ ИМЕЕТ ОТНОШЕНИЯ К САЙТУ JAVARUSH.RU ПРАВИЛА - https://t.me/javarush/75723 Вакансии сюда - https://telegram.me/joinchat/B7IzvUCnfo6d8t3yIxKguQ По вопросам - @thedude

learn.java
learn.java
1 888 участник(ов)

Чат для начинающих и не только Статистика: https://combot.org/chat/-1001083535868 Основной чат - @jvmchat

IDE и редакторы — русскоговорящее сообщество
IDE и редакторы — русскоговорящее сообщество
393 участник(ов)

Общаемся, сравниваем и помогаем друг другу решать задачи с продуктами JetBrains, VS Code, Atom, vim, Emacs, Sublime и т.д. Всё в одном месте, ведь каждый из них хорош по своему. См. также: @js_ru, @typescript_ru, @react_js, @nodejs_ru, @javascript_jobs

Java Underground
Java Underground
169 участник(ов)

https://vk.com/javatutorial

Javanese Questions
Javanese Questions
109 участник(ов)

Чат предназначен для обмена знаниями строго в формате в вопрос-ответ. Тема — Java, Kotlin и Android. Вопрос должен быть предварительно прогуглен, понятно и грамотно сформулирован, помечен хэштегами. Ответ — тем более. Куски кода размером в несколько строк можно писать прямо здесь, для больших кусков кода стоит использовать http://gist.github.com/, http://pastebin.com/, https://codeshare.io/ или любой аналогичный сервис. В некоторых случаях можно прикреплять скриншоты. Стикеры и гифки запрещены. Дополнять и уточнять вопросы и ответы — редактированием исходного сообщения. Обсуждения должны приводить к редактированию вопроса/ответа и удаляться. По хештегам можно искать существующие вопросы и овтеты: #вопрос #ответ #git #generics #java #server #awt #javafx #swing #kotlin #anko #tornadofx #ktor #android #recyclerView #performance #arch #network #permissions #storage #async