java文件如何生成exe文件啊?

java文件如何生成exe文件啊?,第1张

hheh 这个原来也困扰我。用exe4j解决!
以前在学校自己写下java代码直接调试,所以没有考虑把java转换成exe可执行文件这回事。可是后来在应用中才发现,客户的电脑很可能是没有装JVM的,所以你开发的源代码对客户来说一点也不实用。他们要的是直接可用的产品。我们不可能强求用户都去安装java虚拟机。所以在这个时候,把java源程序转换成exe可执行文件就显得非常重要了。
java代码转换成exe其实是比较麻烦的,难 *** 作,而是生成的文件很大。你一个2KB的源文件转换成EXE后可呢个是5-60MB,经过一些工具压缩后也有20几MB。所以一般情况下是不会去吧java换成EXE的--代价太大了。万一要做呢,我们可以借助exe4j这样的工具是可以做的。
这款软件很好用,很简单。你百度上搜一下每一步的详细步骤都会告诉你。我就是照着这个网页去做的。试试吧
>在eclipse开发平台下开发好Java项目(无错误,并可正确运行),首先要把Java项目打包成jar文件。如下图:右键项目--导出--选择java下的jar文件--要导出的文件和目录后点击完成……(记住你选择的输出路径,因为等会要用到打包好的jar文件)
下载exe4j_windows_4_5_2 ,安装运行。
如下图:next--选择jar--输入要生成程序的名称和保存的路径--要是想用自己的icon就勾选icon file并通过文件选择器定位到你的icon
接下来是加载你的jar包(如果要加载其它jar类包,方法一样,比如jxljar)
点击右边的“绿色加号”,在archive里选择你的jar包,选好主类,点ok
4
选择最小的jre版本,一直下一步,默认就可以了,直到有提示exe4j has finished
点击"click here to start the application"便可启动,然后在你之前选择的输出保存路径便可找到打包好的exe文件

第一步,将java项目打包成可执行jar文件,首先看一下我的java project结构,Mainjava是程序入口类,里面有main函数,config目录是些配置文件,lib是用到的第三方类库

第二步,将项目打包成exe,这里要明确一点,并不是把所有的文件都打包成一个exe,资源文件是不能包进去的,往下看↓

首先,在任意目录创建一个文件夹,最好命名和项目名相同,我在F盘创建了一个“Simulate”文件夹,之后将所有的资源文件以及我们生成的可执行jar文件(我的Simulatejar)都拷贝到这个文件夹里,config目录和lib目录,如果你怕执行该程序的机器上没安装jre,那么你需要将自己机器上的jre目录也拷贝进来,我安装的jre5,最后的目录结构:

打开exe4j,跳过欢迎,直接点击左侧导航的第二项,因为我们已经提前将java项目打包成可执行jar文件了

在jbuilder60以前的(包括60),是不能生成exe文件的,所以可以用如下的方法实现。这可以人家高手想出来的,我只是帮着宣传一下。
还有jbuilder70开始都可以生成exe文件。
这个是Borland不公开的使用技巧,能够通过JBuilder来制作exe文件来启动Java文件。
JBuilder并不支持本地编译机制。但是有一个隐藏的技巧可以让你从可执行文件来启动Java程序,可以出现或者不出现console窗口。想做到这些,需要JBuilder的bin目录下的这些文件:
JBuilderexe
JBuilderWexe (可选)
JBuilderconfig
jdkconfig
JavaLauncherdll
“JBuilderexe”是一个通用的可执行外壳文件,用以启动Java程序,”JBuilderWexe“好像是javawexe一样,它把”JBuilderexe”包装起来,但是运行时候不显示那个console的窗口。使用这些文件的关键是文件名。“JBuilderexe”查找一个文件叫”JBuilderconfig”的配置文件,里面包含了运行Java程序的必须信息。同样的”JBuilderWexe”查找”JBuilderexe”来启动不带Console窗口的Java程序。如果把JBuilderexe重命名为”foo
exe”,那”fooexe”将去寻找”fooconfig”配置文件,同样”JBuilderWexe”被重命名为”fooWexe”,它会去寻找”fooexe”文件。
说到这里,聪明的读者应该猜到怎样利用JBuilderexe来启动应用程序了。只要把JBuilderexe,JBuilerWexe,JBuilderconfig改名成相应的文件名,在JBuilderconfig里面指定主类和类路径,就能够通过执行JBuilderexe(或者被改名后的exe文件)来启动Java应用程序了。下面是用本机为例。
Borland JBuilder 5被安装在E:\jbuilder5\目录下,在E:\jbuilder5\bin\下建立一个temp目录,然后把JBuilderexe,JBuilderconfig,JavaLauncherdll,jdkconfig四个文件拷贝到E:\jbuilder5\bin\temp\目录下,然后在这个目录下建立一个hello目录,在这个目录下生成一个hellojava文件,即E:\jbuilder5\bin\temp\hello\hellojava文件,
//hellojava/
package hello;
public class hello{
public static void main(String s[]){
Systemoutprintln("Hello, Exe file!");
}
}
编译成class文件,然后打开Jbuilderconfig文件,作相应的修改:
在JBuilderconfig里面找到下面两行
# Start JBuilder using the its main class
mainclass comborlandjbuilderJBuilder
修改为
# Start JBuilder using the its main class
mainclass hellohello
addpath E:/jbuilder5/bin/temp/
addpath命令是把目录加入类路径中,这个命令和其它config里面可以识别的命令可以在JBuilder/bin目录下的config_readmetxt里面找到详细说明。
然后将jdkconfig里面的javapath修改成相对的路径,例如原来是
javapath /jdk13/bin/java
修改成
javapath //jdk13/bin/java
最后
将JBuilderexe,JBuilderconfig修改成所需要的文件名,例如fooexe和fooconfig文件。
现在执行fooexe文件
至此,通过修改JBuilder来使用exe文件启动自己的Java应用程序已经完成了。
但是好玩的地方并不在这个地方,下面的小技巧可能更有趣,将Jar文件打包进入exe文件!
假设利用上面的文件,生成hellojar包,
jar cvf hellojar hello\class
然后将jar包附加到JBuilderexe后面去,
copy /b \JBuilderexe+hellojar fooexe
在fooconfig(JBuilderconfig)文件里面把前面加入的类路径去掉,并加入下面的路径:
addpath E:/jbuilder5/bin/temp/fooexe
然后执行,fooexe
看到了么?一个含jar包的exe文件被执行了!
这个过程的大致原理是:exe文件的重要信息都在文件头部,所以把乱七八糟的东西放exe文件尾部是不要紧的;而jar/zip文件的重要信息是在文件尾部的,这样它们两不相干,能够容易的被执行。
请注意:读者如果使用这个功能,得自己承担可能带来的风险,因为Borland对这个功能不提供官方的支持!

Windows桌面开发方面不是Java的主攻,Java程序要运行在安装了jdk环境的机器上,要是一定要转成exe文件,也不是不可以,但有点麻烦,而且文件比较大,因为会夹带着一个虚拟机 里面,不过Java完全可以写一个像记事本那样的小程序,我现在就帮你写一个让你看看用Java写的记事本是怎样的:

/  简单记事本开发
 /
import javaawt;
import javaxannotationprocessingFiler;
import javaxswing;
import javaawtEvent;
import javaawtevent;
import javaio;
public class NotePad extends JFrame implements ActionListener {
JTextArea jta=null;
JScrollPane jsp=null;
JMenuBar jmb=null;
JMenu jm1,jm2,jm3,jm4,jm5;
JMenuItem jmi1,jmi2,jmi3;
String str="";
String path="";



public static void main(String[] args) {
NotePad np=new NotePad();
}
public NotePad(){
String str="";
jta =new JTextArea();
jtasetFont(new Font("宋体", FontBOLD,28));
jsp=new JScrollPane(jta);
jmb=new JMenuBar();
jm1=new JMenu("文件(o)");
jm2=new JMenu("编辑(E)");
jm3=new JMenu("格式(O)");
jm4=new JMenu("查看(V)");
jm5=new JMenu("帮助(H)");

jmi1=new JMenuItem("打开");
//jmi1setMnemonic('o');
//添加快捷键
jmi1setAccelerator(KeyStrokegetKeyStroke('O',javaawtEventCTRL_MASK));
jmi2=new JMenuItem("保存");
jmi3=new JMenuItem("退出");


jmi1addActionListener(this);
jmi2addActionListener(this);
jmi3addActionListener(this);


jmbadd(jm1);
jmbadd(jm2);
jmbadd(jm3);
jmbadd(jm4);
jmbadd(jm5);

jm1add(jmi1);
jm1add(jmi2);
jm1add(jmi3);
thissetJMenuBar(jmb);
thisadd(jsp);



thisgetContentPane()setVisible(true);
thissetTitle("新建文本文档");
thissetIconImage((new ImageIcon("D://photos//SNC02103JPG"))getImage());
thissetBounds(150,100,800,600);
thissetDefaultCloseOperation(JFrameEXIT_ON_CLOSE);
thissetVisible(true);

}


public void actionPerformed(ActionEvent e) {
if(egetSource()==jmi1){
JFileChooser jfc=new JFileChooser("C:\\Users\\jie\\Desktop");
jfcsetDialogTitle("请选择您要打开的文件");
jfcshowOpenDialog(null);
str=jfcgetSelectedFile()getName();
thissetTitle(str);

jfcsetVisible(true);
String filename=null;

FileReader fr=null;
BufferedReader br=null;

try {
filename=jfcgetSelectedFile()getAbsolutePath();
fr=new FileReader(filename);
br=new BufferedReader(fr);
String s="";
String all="";
while((s=brreadLine())!=null){
all+=s+"\r\n";
}
jtasetText(all);

} catch (Exception e2) {
Systemoutprintln("a");
e2printStackTrace();
}finally{
try{
frclose();
brclose();
}catch (Exception e3){
e3printStackTrace();
}

}
}

else if(egetSource()==jmi3){
Systemexit(0);

}

}
public void temp(){
JFileChooser jfc2=new JFileChooser("C:\\Users\\jie\\Desktop");
jfc2setDialogTitle("另存为");
jfc2showSaveDialog(null);
jfc2setVisible(true);
path=jfc2getSelectedFile()getAbsolutePath();


}

java代码可以用fatjar工具打包成jar后缀的文件,可以直接运行的。\x0d\如果要打包成exe格式,需要再使用ext4j或者其他工具在jar的基础上再次打包。\x0d\不过java桌面程序是依赖jre的,所以,必须是要求使用电脑安装jre或者在使用\x0d\ext4j打包的时候将jre安装程序也打包了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12809068.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-28
下一篇 2023-05-28

发表评论

登录后才能评论

评论列表(0条)

保存