Сборка *.java и *.class в исполняемое приложение

Автор Musicfuns, 05 июня 2013, 09:13:45

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Musicfuns

Как собрать скомпилированные исходники на java в исполняемой приложение?
В deb пакет собрать я сумею, а вот как получить приложение из jar или из main.java, main.class

sunny_side

http://stackoverflow.com/questions/2011664/compiling-a-java-program-into-an-exe ;)

>>>собрать скомпилированные исходники на java в исполняемой приложение?
А какая причина такого решения? Может все же лучше сделать небольшой скрипт/приложение которые запускают java с нужными параметрами? У java своя экосистема которая при следующем обновлении может оказаться несовместимой со сгенерированым бинарем.

Musicfuns

В exe это конечно хорошо, но вот нужно то под Linux'овые.

Просто хочу распространять свою программу, я же не буду каждому кидать исходники игры, чтобы они запускали их через консоль. Не прилично, популярность уйдет.

Как-то же собирают приложения под Linux на Java.

sunny_side

судя по всему, gcj - наше все:
>>>В exe это конечно хорошо, но вот нужно то под Linux'овые.
http://ptspts.blogspot.com/2012/06/how-to-compile-java-programs-to-stand.html
$ cat >Hello.java <<'END'
public class Hello {
  public static void main(String args[]) {
    System.out.println("Hello, World!");
  }
}
END
$ sudo apt-get install gcj
$ gcj -v
Target: x86_64-linux-gnu
Configured with: ...
Thread model: posix
gcc version 4.4.3 (Ubuntu 4.4.3-1ubuntu4.1)
$ gcj --main=Hello -g -o hello Hello.java
$ ./hello
Hello, World
$ $ ls -l hello                                                     
-rwxr-x--- 1 user group 13846 2012-06-30 15:20 hello
$ ldd ./hello
        linux-vdso.so.1 =>  (0x00007fff01fff000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00007fb352663000)
        libgcj.so.10 => /usr/lib/libgcj.so.10 (0x00007fb34f4fc000)
        libm.so.6 => /lib/libm.so.6 (0x00007fb34f278000)
        libpthread.so.0 => /lib/libpthread.so.0 (0x00007fb34f05b000)
        librt.so.1 => /lib/librt.so.1 (0x00007fb34ee53000)
        libz.so.1 => /lib/libz.so.1 (0x00007fb34ec3b000)
        libdl.so.2 => /lib/libdl.so.2 (0x00007fb34ea37000)
        libc.so.6 => /lib/libc.so.6 (0x00007fb34e6b4000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fb35289a000)

>>>Просто хочу распространять свою программу, я же не буду каждому кидать исходники игры, чтобы они запускали их через консоль. Не прилично, популярность уйдет.

Вы подразумеваете *.class файлы?

>>>Как-то же собирают приложения под Linux на Java.
http://www.e-graviton.com/node/58

вполне может быть что с помощью gcj можно нормально транслировать java в elf, но не известно как обстоит дело со сложными java библиотеками.. нужно проверять, да и судя по всему gcj в неактивном состоянии.

когда-то у майкрософта был visual-j который чем-то подобным занимался, довольно прилично, насколько я помню

dgroup

Правильный способ сборки проектов является использование ant (http://ant.apache.org), maven (http://maven.apache.org).

Оч. удобные инструменты.