Компиляция java-программы в исполняемый файл

Possible Duplicate:
How do я create an.exe for a Java program?

Я только что сделал простую программу с Eclipse и хочу скомпилировать ее в исполняемый файл, но просто не могу понять, как это сделать.

Ответ 1

Вы можете конвертировать .jar файл в .exe следующими способами:
alt text
(источник: viralpatel.net)

1- Оболочка JSmooth.exe:
JSmooth - это исполняемая оболочка Java. Он создает собственные средства запуска Windows (стандартные .exe) для ваших Java-приложений. Это делает развертывание Java намного более плавным и удобным для пользователя, поскольку оно способно найти любую установленную Java VM самостоятельно. Когда виртуальная машина недоступна, оболочка может автоматически загрузить и установить подходящую JVM, или просто отобразить сообщение или перенаправить пользователя на веб-сайт.

JSmooth предоставляет различные обертки для вашего java-приложения, каждое из которых имеет свое поведение: выберите свой вкус!

Загрузить: http://jsmooth.sourceforge.net/

2- JarToExe 1.8
Jar2Exe - это инструмент для преобразования jar файлов в exe файлы. Ниже приведены основные функции, описанные на их веб-сайте:

  • Может генерировать "Консоль", "Windows GUI", "Служба Windows" трех типов исполняемых файлов.
  • Сгенерированные исполняемые файлы могут добавлять значки программ и информацию о версии.
  • Сгенерированные exe файлы могут шифровать и защищать Java-программы, временные файлы не будут создаваться при запуске программы.
  • Сгенерированные exe файлы обеспечивают поддержку значков в системном трее.
  • Сгенерированные exe файлы обеспечивают поддержку журнала системных событий.
  • Сгенерированные exe файлы службы Windows могут устанавливать/удалять самостоятельно, а служба поддержки приостанавливает/продолжает.
  • Новый выпуск версии x64, может создавать 64-разрядных руководителей. (18 мая 2008 г.)
  • Поддерживаются как режим мастера, так и режим командной строки. (18 мая 2008 г.)

Загрузить: http://www.brothersoft.com/jartoexe-75019.html

3- Исполнитель
Упакуйте свое Java-приложение как jar, и Executor превратит jar в exe файл Windows, неотличимый от нативного приложения. Двойной щелчок по exe файлу вызовет среду выполнения Java и запустит ваше приложение.

Загрузить: http://mpowers.net/executor/

ОБНОВЛЕНИЕ: выше ссылка не работает, но вот страница (с рабочей загрузкой) из интернет-архива. http://web.archive.org/web/20090316092154/http://mpowers.net/executor/

4- Продвинутый установщик
Расширенный установщик позволяет создавать Windows MSI за считанные минуты. Это также поддерживает Windows Vista, а также помогает создавать пакеты MSI на других языках.
Загрузить: http://www.advancedinstaller.com/ Дайте мне знать другие инструменты, которые вы использовали для преобразования JAR в EXE.

Ответ 2

Я бы использовал GCJ (GNU Compiler для Java) в вашей ситуации. Это компилятор AOT (раньше времени) для Java, так же как и GCC для C. Вместо интерпретации кода или создания промежуточного Java-кода, который будет запущен позднее VM Java, он генерирует машинный код.

GCJ доступен практически для любой системы Linux через соответствующий диспетчер пакетов (если есть). После установки компилятор GCJ должен быть добавлен к пути, чтобы он мог быть вызван через терминал. Если вы используете Windows, вы можете загрузить и установить GCJ через Cygwin или MinGW.

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

Ответ 3

Я использую launch4j

ANT Команда:

<target name="jar" depends="compile, buildDLLs, copy">
    <jar basedir="${java.bin.dir}" destfile="${build.dir}/Project.jar" manifest="META-INF/MANIFEST.MF" />
</target>

<target name="exe" depends="jar">
    <exec executable="cmd" dir="${launch4j.home}">
        <arg line="/c launch4jc.exe ${basedir}/${launch4j.dir}/L4J_ProjectConfig.xml" />
    </exec>
</target>

Ответ 4

Я обычно использую bat script для этого. Здесь я обычно использую:

@echo off
set d=%~dp0
java -Xmx400m -cp "%d%myapp.jar;%d%libs/mylib.jar" my.main.Class %*

Файл% ~ dp0 извлекает каталог, в котором находится .bat. Это позволяет летучей мыши находить местоположения банок, не требуя каких-либо специальных переменных окружения или настройки переменной PATH.

EDIT: добавлены кавычки в путь к классам. В противном случае, как сказал Джой, "забавные вещи могут случиться с пробелами"

Ответ 5

Мы обнаружили, что Jsmooth хорошо работает и легко доступен для сценариев с ant под Linux. Возможно, вы захотите использовать одну банку (также легко записываемую с помощью ant под Linux), чтобы сначала собрать многопользовательское приложение в одной банке.

Нам в первую очередь понадобилось простое развертывание EXE в сочетании с возможностями "эй, вам нужно Java версия X, перейти сюда, чтобы загрузить".

(но вам, скорее всего, понадобится средство "Runnable jar" / "Executable jar" в стандартной Java).

Ответ 6

То, что вы можете сделать, это создать .bat, который будет выполнять созданный файл .jar, проверяя наличие JRE.

Из полезной ссылки Mitch (источник)

java -classpath myprogram.jar de.vogella.eclipse.ide.first.MyFirstClass

Это может быть использовано в вашей партии...

Ответ 7

Есть небольшая горстка программ, которые делают это... TowerJ - это тот, который приходит на ум (я дам вам Google для него), но он стоит значительных денег.

Наиболее полезная ссылка для этой темы, которую я нашел, находится по адресу: http://mindprod.com/jgloss/nativecompiler.html

он упоминает несколько других продуктов и альтернативы для достижения той же цели.