Java 코드를 컴파일해서 응용프로그램 만들려면 어떻게 하나요

neversleep의 이미지

자바 소스 컴파일하면 클래스 파일만 생기고 그걸 실행하는데
그렇게 실행하지 않고 아예 실행파일 (exe )을 만들고 싶습니다.

예를 들어 이클립스 자체를 보면
이클립스를 다운로드 받으면 실행파일과 함께 여러 파일이 들어있고
실행파일 클릭하면 이클립스 뜨잖아요

자바소스(이클립스 프로젝트)를 빌드해서 그런 형태의 파일들을 만들거거든요.
어떻게 만드는지 (이클립스 사용해서) 알려주세요

mach의 이미지

google : gcj + eclipse
kldp.org : http://kldp.org/node/56188
http://www.cs.umanitoba.ca/~eclipse/6-Compiling.pdf

------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.

------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.

neversleep의 이미지

답변 감사합니다.
지금 윈도우 환경에서 이클립스를 사용하는데
이클립스 어플리케이션을 만드려면 꼭 GCJ/MinGW 가 있어야 하는지요?
이클립스만으로는 만들 수 없는 건가요...

mach의 이미지

Quote:
이클립스만으로는 만들 수 없는 건가요...

eclipse plung-in, RCP등 eclipse 의존적인 어떤 것을 만드는 것이라면 얘기가 틀려집니다.
순수 자바응용을 exe형태(자바 설치 없는)로 개발이라면(단지 개발환경으로서만 이클립스들 사용했을 뿐이라면)gcj를 사용하셔야 겠지요.

"이클립스 어플리케이션" 이라는 용어를 명확히 하지 않습니다.
------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.

------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.

neversleep의 이미지

아 네..
구체적으로는 오픈 소스를 받아서 빌드해서 실행파일(및 관련 파일들)을 만드는 방법을 알고자 합니다.
Windows XP 상에서 eclipse RCP 이용 하구요, 소스는 받아서 run 으로 실행까지는 됩니다.
여기서 실행파일(및 관련 파일들)을 이클립스만 가지고 어떻게 만들 수 있는지 알고 싶어요.

지나가다가의 이미지

jsmooth라는게 있습니다.

실행가능 jar 만드는법은 아시죠?

jsmooth 에서 jar파일 선택하고 여러 옵션 설정하면 exe파일 만들어집니다.
물론, 배포까지 생각하면, jre 배포판에 넣어줘야죠.

kfmes의 이미지

순수하게 exe 파일만가지고는 실행이 불가능합니다.
자바로 만들었으니 JRE가 있어야지요

이클립스의 경우도
elcipse.exe 에서 내부적으로 startup.jar 파일인가를 실행하는걸로 알고 있습니다.

java -jar 이렇게 입력하게 하는게 불편하시다면

c 언어같은걸로
내부에서 java -jar ~~~ 를 실행해주는 프로그램을 작성하셔서 같이 배포하시는게 좋을것 같네요

----------------------------------------

mach의 이미지

gcj에 대해 검색해보세요.

비슷하지만, jre는 필요하지 않습니다.
gcj를 구현하면서 만든 라이브러리들이 필요하기는 합니다.
일단 외관상 순수하게 exe이긴 하지요.

Quote:
$ cat cat.java
import java.io.*;

public class cat {
public static void main (String args[]) {
String thisLine;
for (int i=0; i < args.length; i++) {
try {
System.out.println("===========================");
System.out.println("filename: "+args[i]+", length: "+new File(args[i])
.length()+" bytes");
System.out.println("===========================");
FileInputStream fin = new FileInputStream(args[i]);
// JDK1.1+
BufferedReader myInput = new BufferedReader(new InputStreamReader(fin)
);
while ((thisLine = myInput.readLine()) != null) {
System.out.println(thisLine);
}
System.out.println("===========================");
}
catch (Exception e) {
e.printStackTrace();
}
}
}
}
$ gcj --main=cat -o cat.exe cat.java
$ ldd cat.exe
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00707000)
libgcj.so.5 => /usr/lib/libgcj.so.5 (0x0211d000)
libm.so.6 => /lib/tls/libm.so.6 (0x00591000)
libpthread.so.0 => /lib/tls/libpthread.so.0 (0x006a7000)
libz.so.1 => /usr/lib/libz.so.1 (0x006e0000)
libdl.so.2 => /lib/libdl.so.2 (0x0058b000)
libc.so.6 => /lib/tls/libc.so.6 (0x0045e000)
/lib/ld-linux.so.2 (0x00440000)
$ ./cat.exe cat.java
===========================
filename: cat.java, length: 824 bytes
===========================
import java.io.*;

public class cat {
public static void main (String args[]) {
String thisLine;
for (int i=0; i < args.length; i++) {
try {
System.out.println("===========================");
System.out.println("filename: "+args[i]+", length: "+new File(args[i]).length()+" bytes");
System.out.println("===========================");
FileInputStream fin = new FileInputStream(args[i]);
// JDK1.1+
BufferedReader myInput = new BufferedReader(new InputStreamReader(fin));
while ((thisLine = myInput.readLine()) != null) {
System.out.println(thisLine);
}
System.out.println("===========================");
}
catch (Exception e) {
e.printStackTrace();
}
}
}
}
===========================

------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.

------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.

mach의 이미지

제가 RCP의 존재 및 개략적인 얘기는 알고 있으나, 상세하게 알지 못합니다.
튜토리얼등을 참고하시고 직접해보시는게 좋아 보입니다.

gcj는 C++등에서 자바의 진귀한 기존 클래스를 .so형태의 라이브러리로 만들어서 사용하기에 편리하기 때문에, 제가 본 약간의 정보들을 소개드렸지만, RCP는 이름이나 겨우 알고 있는 정도군요.

개인적으로 (회사의 방향성 땜시) 저는 RCP 같은 것을 위해 이클립스를 사용하지는 않고 있으며, RCP나 plugin등에 대해서는 아마도 당분간은 관망할 것 같습니다. 이에 대한 좋은 아티클들도 다수개 있더군요.

아무쪼록, 좋은 결실 맺으셔서, 지식을 나눠주시면 감사하겠습니다.

아마도 다른 분들께서 좋은 의견 있으리라 기대됩니다.

------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.

------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.

corone의 이미지

저도 궁금했었는데
좋은 답변들 감사합니다

여기는 퍼가기 기능이 없네요..

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.