SunKing's Blog

留言簿(42)

Java链

友链

阅读排行榜

评论排行榜

[原创]我也来做一个最简单的Java2EXE的运行器

我也来做一个最简单的Java2EXE的运行器
                      --罗时民

前段时间有空试了一下Java转成Exe可执行文件的几种方法。想想也自己试着用VC++和Delphi分别做了一个最简单的例子:
原理:
1.将自己Java做的Application程序打包成可执行的Jar文件(在MANIFEST.MF中指定Main-Class: 类名)
2.用VC++,Delphi或其他语言生成可执行的EXE文件,这个EXE的功能是调用COMMOND命令" java -jar Jar文件名",以达到利用EXE执行Jar文件的作用
3.采用了一个小技巧,即利用copy /b "A.exe"+"B.jar" "C.exe"的DOS 命令,将EXE文件和JAR文件合并成一个C.EXE文件,这样C.EXE即包含A.EXE文件的内容,又包含B.jar文件的内容.  当合并完成后,C.exe文件就可以用  java -jar C.exe 来执行,所以我们在代码里,只要调用 "java -jar 程序自身的文件名" 就可以了.

缺陷:
1.这是最简单的方式了,还是没有脱离JVM
2.没有配置文件,当需要设置classpath或其他参数时,则需要改写该程序
3.可以用WinRar,WinZip工具打开EXE文件(这一点和JBuilder生成的EXE文件一样)

以下给出代码: 

VC++代码:
#include "stdafx.h"
#include 
"resource.h"

#include 
<stdio.h> 
#include 
<string.h> 
#include 
<math.h>

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     
int       nCmdShow )
{
    TCHAR exeFullPath[MAX_PATH];
    GetModuleFileName(NULL,exeFullPath,MAX_PATH);
    
char cmd[MAX_PATH+20= "";
    sprintf(cmd,
"java.exe -jar \"%s\"",exeFullPath);
    WinExec(cmd,SW_HIDE);
    
return 0;
}

 

DELPHI代码:

program Sunking;

uses
  Forms,
  Windows;

  {$R 
*.res}
begin
    WinExec(PChar(
'java.exe -jar "'+ Application.ExeName+'"'), SW_HIDE);
end.

 

原代码下载(含工程及测试文件)

posted on 2005-08-16 18:04 SunKing's Blog 阅读(1332) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航: