乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      將java程序打包成exe

       建立新型 2010-08-25
      將java程序打包成exe

      這個(gè)不知選啥分類了。。。。雖說(shuō)是delphi程序,但是操作的核心卻是java。。。不管了。。還是點(diǎn)了個(gè) java類。。。下面進(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è)不知選啥分類了。。。。雖說(shuō)是delphi程序,但是操作的核心卻是java。。。不管了。。還是點(diǎn)了個(gè) java類。。。下面進(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就行了


        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多