免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
將java程序打包成exe
將java程序打包成exe

這個(gè)不知選啥分類(lèi)了。。。。雖說(shuō)是delphi程序,但是操作的核心卻是java。。。不管了。。還是點(diǎn)了個(gè) java類(lèi)。。。下面進(jìn)入正題:

從java剛出來(lái)時(shí),就研究這個(gè)問(wèn)題了,由于java是跨平臺(tái)的,如果打包成exe,就變成了只有windows下才能使用的程序,與java的本來(lái)意愿不符。所以我一直在尋找一種既能打包,又能不破壞兼容性的方法。

網(wǎng)上有許多java打包工具,都能把java的class文件弄成exe,但是如果想要兼容其他的平臺(tái),那就只有自己動(dòng)手寫(xiě)代碼了。在此,我選用了Delphi對(duì)java程序進(jìn)行打包,因?yàn)橹挥蠨elphi才能夠直接跨平臺(tái),它與java的配合是相當(dāng)默契的。經(jīng)過(guò)打包的程序能同時(shí)在windows和Red Hat linux下運(yùn)行。

下面給出源代碼:

首先制作一個(gè)資源文件,命名為Java.rc,內(nèi)容如下:
App javafile App.class

然后保存,在控制臺(tái)下用Brcc32 Java.rc命令行編譯
編譯完成后生成一個(gè)Java.res文件,在程序中引用這個(gè)文件就相當(dāng)于導(dǎo)入了該class文件

program JavaApp;

uses
Registry,Classes,
{$IFDEF MSWINDOWS}Windows{$ENDIF}
{$IFDEF LINUX}Qt,QTypes,QStyle{$ENDIF};

{$R java.RES}
{$R *.res}

var
{$IFDEF MSWINDOWS}Reg:TRegistry;{$ENDIF}
Java_HOME:string;
Java:string;
JavaStream:TResourceStream;
begin
{$IFDEF MSWINDOWS}
Reg:=TRegistry.Create;
Reg.RootKey:=HKEY_LOCAL_MACHINE;
Reg.OpenKey('SYSTEM\ControlSet001\Control\Session Manager\Environment',true);
Java_HOME:=reg.ReadString('JAVA_HOME');
Reg.Free;
{$ELSE $IFDEF LINUX}
Java_HOME:='Root/Bin/J2SDK';
{$ENDIF}
{$IFDEF MSWINDOWS}
Java:=Java_HOME+'\Bin\Java.exe';
{$ELSE $IFDEF LINUX}
Java:=Java_HOME+'/Bin/Java.so';
{$ENDIF}
JavaStream:=TResourceStream.Create(HInstance,'App','javafile');
JavaStream.SaveToFile('App.class');
將java程序打包成exe

這個(gè)不知選啥分類(lèi)了。。。。雖說(shuō)是delphi程序,但是操作的核心卻是java。。。不管了。。還是點(diǎn)了個(gè) java類(lèi)。。。下面進(jìn)入正題:

從java剛出來(lái)時(shí),就研究這個(gè)問(wèn)題了,由于java是跨平臺(tái)的,如果打包成exe,就變成了只有windows下才能使用的程序,與java的本來(lái)意愿不符。所以我一直在尋找一種既能打包,又能不破壞兼容性的方法。

網(wǎng)上有許多java打包工具,都能把java的class文件弄成exe,但是如果想要兼容其他的平臺(tái),那就只有自己動(dòng)手寫(xiě)代碼了。在此,我選用了Delphi對(duì)java程序進(jìn)行打包,因?yàn)橹挥蠨elphi才能夠直接跨平臺(tái),它與java的配合是相當(dāng)默契的。經(jīng)過(guò)打包的程序能同時(shí)在windows和Red Hat linux下運(yùn)行。

下面給出源代碼:

首先制作一個(gè)資源文件,命名為Java.rc,內(nèi)容如下:
App javafile App.class

然后保存,在控制臺(tái)下用Brcc32 Java.rc命令行編譯
編譯完成后生成一個(gè)Java.res文件,在程序中引用這個(gè)文件就相當(dāng)于導(dǎo)入了該class文件

program JavaApp;

uses
Registry,Classes,
{$IFDEF MSWINDOWS}Windows{$ENDIF}
{$IFDEF LINUX}Qt,QTypes,QStyle{$ENDIF};

{$R java.RES}
{$R *.res}

var
{$IFDEF MSWINDOWS}Reg:TRegistry;{$ENDIF}
Java_HOME:string;
Java:string;
JavaStream:TResourceStream;
begin
{$IFDEF MSWINDOWS}
Reg:=TRegistry.Create;
Reg.RootKey:=HKEY_LOCAL_MACHINE;
Reg.OpenKey('SYSTEM\ControlSet001\Control\Session Manager\Environment',true);
Java_HOME:=reg.ReadString('JAVA_HOME');
Reg.Free;
{$ELSE $IFDEF LINUX}
Java_HOME:='Root/Bin/J2SDK';
{$ENDIF}
{$IFDEF MSWINDOWS}
Java:=Java_HOME+'\Bin\Java.exe';
{$ELSE $IFDEF LINUX}
Java:=Java_HOME+'/Bin/Java.so';
{$ENDIF}
JavaStream:=TResourceStream.Create(HInstance,'App','javafile');
JavaStream.SaveToFile('App.class');
{$IFDEF MSWINDOWS}
WinExec(PChar(Java+' App'),SW_Hide);
{$ELSE $IFDEF LINUX}
asm
Call RH.Run(PChar(Java+' App'));
end;
{$ENDIF}
JavaStream.Free;
end.

一切搞定,現(xiàn)在可以運(yùn)行EXE了。如果要放到Linux下運(yùn)行,只需要把EXE改成SO就行了



{$IFDEF MSWINDOWS}
WinExec(PChar(Java+' App'),SW_Hide);
{$ELSE $IFDEF LINUX}
asm
Call RH.Run(PChar(Java+' App'));
end;
{$ENDIF}
JavaStream.Free;
end.

一切搞定,現(xiàn)在可以運(yùn)行EXE了。如果要放到Linux下運(yùn)行,只需要把EXE改成SO就行了


本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
delphi中採(cǎi)用bpl共享模塊的幾點(diǎn)釋疑
嘔心瀝血Android studio使用JNI實(shí)例
u-boot2010-06 添加下載菜單
XE10開(kāi)發(fā)的APP對(duì)于蘋(píng)果IPV6上架要求的處理(DelphiTeacher)
Linux內(nèi)核編譯 CONFIG_MODVERSIONS 作用
u-boot啟動(dòng)代碼start.S詳解三
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服