将Java程序作成exe文件的几种方法

将Java程序作成exe文件的几种方法,第1张

是要将做好的Java应用程序移植到Windows上吗?

用exe4j或者jar2exe软件可以把可运行的jar文件转成exe。此时可以双击exe运行,但是运行的时候仍然依赖电脑中的JRE库。编译的时候可以指定JRE库(默认直接从环境变量中寻找JRE,当然也可以手动添加JRE路径)

如果需要让其他没有装JRE库的电脑能够运行,则需要把相关库打包带上。这里推荐用InnoSetup,很好用。

建议把JRE库复制到一个一个文件夹,把jar复制到同一个文件夹,然后用exe4j生成exe,生成的时候指定JRE目录为当前目录下的JRE,然后用InnoSetup将两者整体打包,生成安装文件即可。

喜欢请记得采纳。

有个简单的方法:将jre运行环境拷到你的程序目录下,你可以为你的class文件或者jar文件创建单独的目录作为你这个程序的主目录,再将jre解压下来的文件夹包含bin目录(通常叫做java_home)的哪个目录拷贝到你新建的主目录下,并将class或者jar包放入该主目录,然后在该目录创建一个后缀名为bat的文件,用记事本打开,直接写上你运行java时的命令,不过这里你使用的java程序是该文件夹下的jre,而不是环境变量里的jre,所以应该是相对路径,bin\java class名,(jar包的运行变通一下,一样的),保存以下,双击就能运行,并且,这个运行环境跟着你的程序走,即使到了陌生的机器,同样的双击就可以运行,并且你也可以为这个bat文件创建快捷方式,更改图标等等,大概步骤就这样,文字看起来有点多,但是真正的步骤也没几步,重要的是理解

1下载Fat Jar插件

2 安装之后,右键选择项目时,会出现Build Fat Jar ,选择该方法,然后按照向导即可一步步导出可执行jar文件。

如果有外部的jar包,比如说sqljdbcjar,则把所有要使用的第三方的jar包都复制到{Java_home}\jre\lib\ext 目录下。(必须重新启动Eclipse才能加载这些jar包)而象SWT项目这样所使用的jar包,则不需要这么设置,直接在向导中选择所需要的jar包即可。

3然后就可以在导出目录中运行这个可执行jar包,但如果是SWT项目,则必须在包含该可执行jar包的目录下有一个swt-win32-3235dll之类的文件。

4有了可执行的jar文件,然后可以使用exe4jexe之类的jar转exe软件,如果使用exe4jexe则当调用到sqljdbcjar之类的外部包时,则必须将sqljdbcjar也一并导入。安装向导就可以生成exe文件了,如果是SWT项目则也必须在同目录下有swt-win32-3235dll之类的文件。

这个软件可以,里面还有破解补丁。

第一次安装时要求系统有15版本以上的JDK,如果你的机器上有JDK,点Locate找到你机器上已安装的JDK目录下/bin/javaexe就可以进行安装了。

下面就打包过程详细说明一下:

第1步,默认即可。

第2步,如果已经有制作好的jar文件,则下面一个"JARinEXE"。

第3步,上面是项目名称,可随便填写,下面一个写出你想要将打包后的exe文件输出的目录:

第4步,由于我的演示程序是图形的,所以选第一个,如果你的程序是控制台的,则选择第二个,Executable name写你将要生成的exe文件的名字,IconFile可以选择生成文件的图标

第5步,首先,单击绿色的"+"号,在弹出的窗口中点Archive,然后找到起初已经做好的jar文件,"OK"后返回,在下面的Class Path里就出现jar文件路径后,再在上面Main Class栏内点击找到main所在的类,这一步即算完成:

第6步,你系统的JRE版本,上面填个13,下面填16:

当然,这样配置的程序只能在安装有JRE的机器上执行,发布时总要考虑的问题就是用户是否有能力在自己机器上安装JRE,总不能发布一个程序还要用户自己安装个JRE吧,下面我就介绍如何将JDK环境变量动态打包到exe中,在这里单击advancedoptions,选择searchsequence。

首先把JRE复制到exe文件输出的目录里,我用的是c:\xaocker\,在弹出的窗口中,删除列表中所有项,然后单击绿+,选择directory并选择JRE的根目录(注意是拷贝后的目录)即可,单击ok后,再从图中单击advancedoptions,并选择preferred VM,在弹出的窗口中选择clienthostspotVM,单击next按钮继续:

第7、8步是一些基本配置,默认即可,第9步编译,第10步你就可以点这个看到效果了:

exe4j未注册的版本会出现对话框:点击确定之后就可以看到你程序的运行结果了!

javaexe依照一套逻辑来寻找可以用的JRE,首先查找自己所在的目录下有没有JRE,其次查找自己的父目录下有没有JRE;最后才是查询Windows的注册表。

现在我们的程序可以在任意的计算机上执行了,可是缺点是致命的,比方说我的程序才160K,可是不论走到哪里都要背着70多M的JRE,未免有点小题大做吧,其实作为我们的私有的JRE,好多内容都是可以抛弃的。Jre目录下的license都可以不要,bin下的执行文件只需要保留javaexe或者javawexe,lib下只要保留rt,jsse,jce,charsets几个库就可以了。除了i386和zi两个子目录外,其余的子目录都可以不要。Zi下只需要保留自己地区的子目录和其下的一些文件就可以。Lib下除了库之外的属性文件等等都要保留。这样清理一番,JRE仍然有接近50MB。还可以继续清理几个库文件里面不需要的内容,这需要仔细的整理,会很费功夫。最好能写出一个自动工具帮助我们整理它们。从Sun公司上下到的JMF里面附带的用Java写的媒体播放器就自带了JRE,只有几个MB。

清理过后需要运行几遍我们的应用程序,以确保我们的JRE不缺少东西。

OK,仔细清理之后,文件变小了不少,可以发布了……

按楼主的要求,最适合你的工具应该是InstallAnyWhere

它可以打包JRE,且打包好以后可以拿到任何Windows平台的电脑中使用,也就是说它生成的exe文件跟平台是否安装JRE无关,因为exe文件中已经集成了JRE环境。此方法简单且绝对可行,我以前用过。

InstallAnyWhere:下载地址:http://wwwverycdcom/topics/41956/

可参考的教程:http://wwwhost01com/PrintHtml98931

这个教程是我现在在网上随便找的,因为以前做过的东西,现在没有方便的资料,上面的教程能唤起以前对InstallAnyWhere使用的回忆。

祝使用愉快。

<html>

<head>

<title>玫瑰</title>

<style type="text/css">

#shusheng {

position: absolute;

width: 100%;

height: 100%;

text-align: center;

}

</style>

</head>

<body>

<div style="text-align: center">

<h1>

送给xxx的花

</h1>

</div>

<div id="shusheng">

<canvas id="c"></canvas> 

<script>

var b = documentbody;

var c = documentgetElementsByTagName('canvas')[0];

var a = cgetContext('2d');

documentbodyclientWidth; 

</script>

<script>

with(m=Math)C=cos,

S=sin,

P=pow,

R=random;

cwidth=cheight=f=500;

h=-250;

function p(a,b,c){

if(c>60)

return[S(a7)(13+5/(2+P(b4,4)))-S(b)50,bf+50,625+C(a7)(13+5/(2+P(b4,4)))+b400,a1-b/2,a];A=a2-1;

B=b2-1;

if(AA+BB<1){

if(c>37) {

n=(j=c&1)6:4;o=5/(a+01)+C(b125)3-a300;w=bh;

return[oC(n)+wS(n)+j610-390,oS(n)-wC(n)+550-j350,1180+C(B+A)99-j300,4-a1+P(1-BB,-h6)15-ab4+C(a+b)/5+P(C((o(a+1)+(B>0w:-w))/25),30)1(1-BB),o/1e3+7-ow3e-6]

}

if(c>32) {

c=c116-15;o=a45-20;w=bbh;z=oS(c)+wC(c)+620;

return[oC(c)-wS(c),28+C(B5)99-bbb60-z/2-h,z,(bb3+P((1-(AA)),7)15+3)b,b7]

}

o=A(2-b)(80-c2);

w=99-C(A)120-C(b)(-h-c49)+C(P(1-b,7))50+c2;

z=oS(c)+wC(c)+700;

return[oC(c)-wS(c),B99-C(P(b, 7))50-c/3-z/135+450,z,(1-b/12)9+a1, P((1-b),20)/4+05]

}

}

setInterval('for(i=0;i<1e4;i++)if(s=p(R(),R(),i%46/74)){z=s[2];x=~~(s[0]f/z-h);y=~~(s[1]f/z-h);if(!m[q=yf+x]|m[q]>z)m[q]=z,afillStyle="rgb("+~(s[3]h)+","+~(s[4]h)+","+~(s[3]s[3]-80)+")",afillRect(x,y,1,1)}',0)

</script>

</div>

</body>

</html>

保存到html文件,用浏览器打开,文字内容自己写

欢迎分享,转载请注明来源:表白网

原文地址:https://h5.hunlipic.com/biaobai/2774196.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2024-01-11
下一篇2024-01-11

发表评论

登录后才能评论

评论列表(0条)

    保存