java生成exe 用命令
最佳答案看完下面的帖子你就明白了常常在网上看到有人询问:如何把java 程序编译成 .exe 文件。
通常回答只有两种,一种是制作一个可执行的JAR 文件包,然后就可以像.chm 文档一样双击运行了;而另一种是使用JET 来进行编译。
但是JET 是要用钱买的,而且据说JET 也不是能把所有的Java 程序都编译成执行文件,性能也要打些折扣。
所以,使用制作可执行JAR 文件包的方法就是最佳选择了,何况它还能保持Java 的跨平台特性。
下面就来看看什么是JAR 文件包吧:1. JAR 文件包JAR 文件就是Java Archive File,顾名思意,它的应用是与Java 息息相关的,是Java 的一种文档格式。
JAR 文件非常类似ZIP 文件——准确的说,它就是ZIP 文件,所以叫它文件包。
JAR 文件与ZIP 文件唯一的区别就是在JAR 文件的内容中,包含了一个META-INF/MANIFEST.MF 文件,这个文件是在生成JAR 文件的时候自动创建的。
举个例子,如果我们具有如下目录结构的一些文件:==`-- test`-- Test.class把它压缩成ZIP 文件test.zip,则这个ZIP 文件的内部目录结构为:test.zip`-- test`-- Test.class如果我们使用JDK 的jar 命令把它打成JAR 文件包test.jar,则这个JAR 文件的内部目录结构为:test.jar|-- META-INF| `-- MANIFEST.MF`-- test`--Test.class2. 创建可执行的JAR 文件包制作一个可执行的JAR 文件包来发布你的程序是JAR 文件包最典型的用法。
Java 程序是由若干个 .class 文件组成的。
这些 .class 文件必须根据它们所属的包不同而分级分目录存放;运行前需要把所有用到的包的根目录指定给CLASSPATH 环境变量或者java 命令的-cp 参数;运行时还要到控制台下去使用java 命令来运行,如果需要直接双击运行必须写Windows 的批处理文件(.bat) 或者Linux 的Shell 程序。
因此,许多人说,Java 是一种方便开发者苦了用户的程序设计语言。
其实不然,如果开发者能够制作一个可执行的JAR 文件包交给用户,那么用户使用起来就方便了。
在Windows 下安装JRE (Java Runtime Environment) 的时候,安装文件会将 .jar 文件映射给javaw.exe 打开。
那么,对于一个可执行的JAR 文件包,用户只需要双击它就可以运行程序了,和阅读 .chm 文档一样方便(.chm 文档默认是由hh.exe 打开的)。
那么,现在的关键,就是如何来创建这个可执行的JAR 文件包。
创建可执行的JAR 文件包,需要使用带cvfm 参数的jar 命令,同样以上述test 目录为例,命令如下:jar cvfm test.jar manifest.mf test这里test.jar 和manifest.mf 两个文件,分别是对应的参数f 和m,其重头戏在manifest.mf。
因为要创建可执行的JAR 文件包,光靠指定一个manifest.mf 文件是不够的,因为MANIFEST 是JAR 文件包的特征,可执行的JAR 文件包和不可执行的JAR 文件包都包含MANIFEST。
关键在于可执行JAR 文件包的MANIFEST,其内容包含了Main-Class 一项。
这在MANIFEST 中书写格式如下:Main-Class: 可执行主类全名(包含包名)例如,假设上例中的Test.class 是属于test 包的,而且是可执行的类(定义了public static void main(String[]) 方法),那么这个manifest.mf 可以编辑如下:Main-Class: test.Test <回车>;这个manifest.mf 可以放在任何位置,也可以是其它的文件名,只需要有Main-Class: test.Test 一行,且该行以一个回车符结束即可。
创建了manifest.mf 文件之后,我们的目录结构变为:==|-- test| `-- Test.class`-- manifest.mf这时候,需要到test 目录的上级目录中去使用jar 命令来创建JAR 文件包。
也就是在目录树中使用“==”表示的那个目录中,使用如下命令:jar cvfm test.jar manifest.mf test之后在“==”目录中创建了test.jar,这个test.jar 就是执行的JAR 文件包。
运行时只需要使用java -jar test.jar 命令即可。
需要注意的是,创建的JAR 文件包中需要包含完整的、与Java 程序的包结构对应的目录结构,就像上例一样。
而Main-Class 指定的类,也必须是完整的、包含包路径的类名,如上例的test.Test;而且在没有打成JAR 文件包之前可以使用java <类名>; 来运行这个类,即在上例中java test.Test 是可以正确运行的(当然要在CLASSPATH 正确的情况下)。
3. jar 命令详解jar 是随JDK 安装的,在JDK 安装目录下的bin 目录中,Windows 下文件名为jar.exe,Linux 下文件名为jar。
它的运行需要用到JDK 安装目录下lib 目录中的tools.jar 文件。
不过我们除了安装JDK 什么也不需要做,因为SUN 已经帮我们做好了。
我们甚至不需要将tools.jar 放到CLASSPATH 中。
使用不带任何的jar 命令我们可以看到jar 命令的用法如下:jar {ctxu}[vfm0M] [jar-文件] [manifest-文件] [-C 目录] 文件名 ...其中{ctxu} 是jar 命令的子命令,每次jar 命令只能包含ctxu 中的一个,它们分别表示:-c 创建新的JAR 文件包-t 列出JAR 文件包的内容列表-x 展开JAR 文件包的指定文件或者所有文件-u 更新已存在的JAR 文件包(添加文件到JAR 文件包中)[vfm0M] 中的选项可以任选,也可以不选,它们是jar 命令的选项参数-v 生成详细报告并打印到标准输出-f 指定JAR 文件名,通常这个参数是必须的-m 指定需要包含的MANIFEST 清单文件-0 只存储,不压缩,这样产生的JAR 文件包会比不用该参数产生的体积大,但速度更快-M 不产生所有项的清单(MANIFEST〕文件,此参数会忽略-m 参数[jar-文件] 即需要生成、查看、更新或者解开的JAR 文件包,它是-f 参数的附属参数[manifest-文件] 即MANIFEST 清单文件,它是-m 参数的附属参数[-C 目录] 表示转到指定目录下去执行这个jar 命令的操作。
它相当于先使用cd 命令转该目录下再执行不带-C 参数的jar 命令,它只能在创建和更新JAR 文件包的时候可用。
文件名 ... 指定一个文件/目录列表,这些文件/目录就是要添加到JAR 文件包中的文件/目录。
如果指定了目录,那么jar 命令打包的时候会自动把该目录中的所有文件和子目录打入包中。
下面举一些例子来说明jar 命令的用法:1) jar cf test.jar test该命令没有执行过程的显示,执行结果是在当前目录生成了test.jar 文件。
如果当前目录已经存在test.jar,那么该文件将被覆盖。
2) jar cvf test.jar test该命令与上例中的结果相同,但是由于v 参数的作用,显示出了打包过程,如下:标明清单(manifest)增加:test/(读入= 0) (写出= 0)(存储了0%)增加:test/Test.class(读入= 7) (写出= 6)(压缩了14%)3) jar cvfM test.jar test该命令与2) 结果类似,但在生成的test.jar 中没有包含META-INF/MANIFEST 文件,打包过程的信息也略有差别:增加:test/(读入= 0) (写出= 0)(存储了0%)增加:test/Test.class(读入= 7) (写出= 6)(压缩了14%)4) jar cvfm test.jar manifest.mf test运行结果与2) 相似,显示信息也相同,只是生成JAR 包中的META-INF/MANIFEST 内容不同,是包含了manifest.mf 的内容5) jar tf test.jar在test.jar 已经存在的情况下,可以查看test.jar 中的内容,如对于2) 和3) 生成的test.jar 分别应该此命令,结果如下;对于2)META-INF/META-INF/MANIFEST.MFtest/test/Test.class对于3)test/test/Test.class6) jar tvf test.jar除显示5) 中显示的内容外,还包括包内文件的详细信息,如:0 Wed Jun 19 15:39:06 GMT 2002 META-INF/86 Wed Jun 19 15:39:06 GMT 2002 META-INF/MANIFEST.MF0 Wed Jun 19 15:33:04 GMT 2002 test/7 Wed Jun 19 15:33:04 GMT 2002 test/Test.class7) jar xf test.jar解开test.jar 到当前目录,不显示任何信息,对于2) 生成的test.jar,解开后的目录结构如下:==|-- META-INF| `-- MANIFEST`-- test`--Test.class8) jar xvf test.jar运行结果与7) 相同,对于解压过程有详细信息显示,如:创建:META-INF/展开:META-INF/MANIFEST.MF创建:test/展开:test/Test.class9) jar uf test.jar manifest.mf在test.jar 中添加了文件manifest.mf,此使用jar tf 来查看test.jar 可以发现test.jar 中比原来多了一个manifest。
这里顺便提一下,如果使用-m 参数并指定manifest.mf 文件,那么manifest.mf 是作为清单文件MANIFEST 来使用的,它的内容会被添加到MANIFEST 中;但是,如果作为一般文件添加到JAR 文件包中,它跟一般文件无异。
10) jar uvf test.jar manifest.mf与9) 结果相同,同时有详细信息显示,如:增加:manifest.mf(读入= 17) (写出= 19)(压缩了-11%)4. 关于JAR 文件包的一些技巧1) 使用unzip 来解压JAR 文件在介绍JAR 文件的时候就已经说过了,JAR 文件实际上就是ZIP 文件,所以可以使用常见的一些解压ZIP 文件的工具来解压JAR 文件,如Windows 下的WinZip、WinRAR 等和Linux 下的unzip 等。
用install4j为Java打包exe教程
用install4j 工具为java程序打包exe 网上搜破解版的install4j下载一个就行.1、用Eclipse 将程序源码打包成jar文件.打包jar方法我不做介绍了,相信大家都会,不会的百度一下吧。
2、准备工作.将导出的jar包:aaa.jar,程序需要的图片:images,数据库database,以及你要生成exe文件后的图标png图片,全部复制到一个SMMS文件夹下面。
3、打开安装好的install4j文件输入程序全名Full Name,程序简称Short Name, 版本号version, 然后点击右上角的蓝色箭头进行下一步。
4、输入JRE 的最低版本号,最高可以为空。
因为此前打包过其他源码,并安装过JRE所以在下面JRE的搜索结果中(红丝边框内)会出现JRE环境,初次打包是没有的。
点击右上角箭头进入下一步。
5、选择语言,然后点击右上角箭头进行下一步6、红框内设置文件打包后存放路径,点击右上角箭头进行下一步。
7、连续点击下一步到Files 界面,点击Add Files(红框内)8、点击Add Files后,如果是打包某个单独文件,选Single files,next到下一步9、点击绿色的加号,添加需要打包的文件。
10、选择需要的jar包11、一直点击next 到finished 界面,再点OK。
12、可以看到刚引入的jar文件13、因为我们的程序需要数据库和图片,也要把这些导进去。
所以先建立两个文件夹images和database。
首先导入图片,鼠标选中images,点击Add Files14、这里选择Directory,因为直接导入整个图片文件夹。
15、找到图片的路径16、一直点next 到finished界面,点击OK17、可以看到刚刚导入的图片路径,然后鼠标选中database,点击Add Files,同样的方法导入database18、导入成功,点击右上角箭头进行下一步19、连续点击next 到这个界面以后,点击绿色的加号,再选择All files in the distribution tree, 然后右上角箭头进行下一步。
Windows系统中Java调用cmd命令及执行exe程序的方法
Windows系统中Java调⽤cmd命令及执⾏exe程序的⽅法Java调⽤cmd命令,并输出显⽰信息:package com.anxin.cmd.test;import java.io.BufferedReader;import java.io.InputStreamReader;public class Command {public static void main(String[] args) {try {Runtime rt = Runtime.getRuntime();Process pr = rt.exec("cmd /c dir"); // cmd /c calc// Process pr = rt.exec("D:\ unlei\\project.aspx");BufferedReader input = new BufferedReader(new InputStreamReader(pr.getInputStream(), "GBK"));String line = null;while ((line = input.readLine()) != null) {System.out.println(line);}int exitVal = pr.waitFor();System.out.println("Exited with error code " + exitVal);} catch (Exception e) {System.out.println(e.toString());e.printStackTrace();}}}Java启动本机应⽤程序EXE的三种⽅式:第⼀种⽅式:利⽤cmd⽅式/*** 执⾏cmd命令** @param command* @throws IOException*/public static String executeCmd(String command) throws IOException {("Execute command : " + command);Runtime runtime = Runtime.getRuntime();Process process = runtime.exec("cmd /c " + command);BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream(), "UTF-8"));String line = null;StringBuilder build = new StringBuilder();while ((line = br.readLine()) != null) {(line);build.append(line);}return build.toString();}executeCmd(start "AXAdWebBrowser" "D:\AXAdsBrowser\AXAdWebBrowser.exe");第⼆种⽅式:利⽤ProcessBuilder调⽤cmd⽅式/*** 启动应⽤程序** @param programName* @return* @throws IOException*/public static void startProgram(String programPath) throws IOException {("启动应⽤程序:" + programPath);if (StringUtils.isNotBlank(programPath)) {try {String programName = programPath.substring(stIndexOf("/") + 1, stIndexOf(".")); List<String> list = new ArrayList<String>();list.add("cmd.exe");list.add("/c");list.add("start");list.add("\"" + programName + "\"");list.add("\"" + programPath + "\"");ProcessBuilder pBuilder = new ProcessBuilder(list);pBuilder.start();} catch (Exception e) {e.printStackTrace();log.error("应⽤程序:" + programPath + "不存在!");}}}第三种⽅式:使⽤Desktop启动应⽤程序/*** 启动应⽤程序** @param programName* @return* @throws IOException*/public static void startProgram(String programPath) throws IOException {("启动应⽤程序:" + programPath);if (StringUtils.isNotBlank(programPath)) {try {Desktop.getDesktop().open(new File(programPath));} catch (Exception e) {e.printStackTrace();log.error("应⽤程序:" + programPath + "不存在!");}}}。
java程序打包成exe(伪脱离JVM)
java程序打包成exe(伪脱离JVM)1前言exe4j是不可以把jre压缩到exe里面的,可以通过安装包的形式实现jre和java程序绑定,但是这样又多了一个安装的过程。
Excelsior JET虽然内置了自己的jre,但是想要在不安装java环境的电脑上运行,也是需要打包成安装程序的。
我们都知道java的运行是离不开jvm的,所以只能实现伪脱离jvm来运行。
简单的说就是自己带一个jvm但是将其隐藏起来,不对用户公开。
本文介绍一种相对而言比较让人满意的java程序打包成exe(伪脱离JVM)的方式,主要利用的工具是exe4j和winrar压缩工具,但是该方式也存在缺陷,就是如果程序包比较大,则自解压缩时间会比较久,看起来就像程序没有反应一样。
而且后面不能带参数运行。
2exe4j将java打包成exe程序2.1创建java示例程序包名可以自定义,目录结构也可以根据自己的需求来安排。
需要注意的一点是:jre一定要选择自己安装的jdk,因为后面要用到该jre(需要将jre拷贝出来)。
HelloWorld.java代码如下:注意:代码中的try-catch模块是必须的,这和我们最终要打包成console程序密切相关,否则就会出现一闪而逝的现象。
即TimeUnit.SECONDS.sleep(20)表示程序运行结束后,20s后退出(参数可以根据实际情况自己设置)。
备注:其他方式实现也可以,比如:Thread2.2java打包成jar在eclipse中,选中项目,右键,选择Exp ort…,选择JAR file,如下图所示:取消掉不需要的说明文件,并选择输出路径:点击Next,Next,然后选择主函数:点击Finish就成功生成JAR文件到我们指定的目录了。
2.3将JAR打包成EXE首先,找到我们在2.1中创建项目指定的jdk版本所对应的jre文件夹,并将其拷贝到我们生成的JAR所在的目录里。
JAR2EXE.ico是我们后面将要用到的图标。
Java打包成jar文件,以及将jar文件导出为exe文件方法汇总
Java打包成jar文件,以及将jar文件导出为exe文件方法汇总(图形说明)一、Java打包成jar文件方法一:用Eclipse导出jar文件注:我用的是Eclipse,但是MyEclipse也大同小异首先右键点击所要打包的工程,选择Export选项选择JAR file,点击Next在要打包的工程前打钩,如上图红色所示;选择导出文件的目的地址,如图蓝色所示,包名随意,没有特定的要求;点击Next点击Browse选择到主类所在的上一个文件夹,别忘了填写File name(随意起名即可),点击OK;点击第四幅图的下面的Browse按钮,选择主类的名字,如下图所示点击OK,即可完成打包。
运行jar文件,可将jar文件与一个批处理文件放到一个文件夹中;其中批处理文件的内容为:java -jar neme.jar(其中name为jar包的名字)批处理文件格式为.bat;双击批处理文件即可运行程序。
PS:将java工程文件打包成.exe文件我用的是一个exe4j的免费软件第一步:默认即可,直接点击Next第二步:如果有已经制作好的jar文件,选择“JAR in EXE”mode,然后点击Next第三步:红色划线框内填写工程名字,随意即可;蓝色划线框内填写打包后的exe文件输出目录第四步:如果需要导出为exe文件的是图形界面,则选择GUI application;如果要导出为exe文件的是控制台的,则选择console application;Executable name写你将要生成的exe文件的名字,Icon File可以选择生成文件的图标第五步:点击绿色的加号,出现如下所示对话框,选择archive,然后选择已经打包好的jar文件选择主类完成后如图所示第六步:最小版本填1.3,最大版本填1.6;如果只需导出的exe在装有JRE的机子上可以运行,那么一路Next下去,最后点击Finish即可;如果想要在没有装JRE的机器上运行,那么需要继续,点击Advanced Options,选择searchsequence选择Directory,点击浏览按钮,选择JRE所在的根目录,将JRE复制过来,如下图所示选择Preferred VM,选择Client hotspot VM第7、8步是一些基本配置,默认即可,第9步编译,第10步你就可以看到以下效果了好了,大功告成了~方法二:用命令生成jar文件首先编写一个清单文件,名为:MANIFEST.MFT,其代码如下:Manifest-Version: 1.0//该属性是创建可执行jar包必需的,指定的Main-Class为全路径类名(且该类必需有main方法)Main-Class:填写你的主类Created-By: 1.5.0_02 (Sun Microsystems Inc.)然后,使用如下命令生成jar文件:jar cfm 填写你要生成jar的名字.jar MANIFEST.MFT *.class其中,c表示要生成一个新的jar文件;f表示生成jar的名字;m表示清单文件的名字二、ar文件导出为可执行文件,即exe文件方法一:用j2ewiz,使用方法如下:操作步骤:1、双击j2ewiz.exe,出现软件注册窗口,点击下一步。
如何把java程序编译成.exe文件(就是制作可执行的JAR文件包)
需要注意的是,创建的 JAR 文件包中需要包含完整的、与 Java 程序的包结构对应的目录结构,就像上例一样。而 Main-Class 指定的类,也必须是完整的、包含包路径的类名,如上例的 test.Test;而且在没有打成 JAR 文件包之前可以使用 java <类名> 来运行这个类,即在上例中 java test.Test 是可以正确运行的 (当然要在 CLASSPATH 正确的情况下)。
其实不然,如果开发者能够制作一个可执行的 JAR 文件包交给用户,那么用户使用起来就方便了。在 Windows 下安装 JRE (Java Runtime Environment) 的时候,安装文件会将 .jar 文件映射给 javaw.exe 打开。那么,对于一个可执行的 JAR 文件包,用户只需要双击它就可以运行程序了,和阅读 .chm 文档一样方便 (.chm 文档默认是由 hh.exe 打开的)。那么,现在的关键,就是如何来创建这个可执行的 JAR 文件包。
`-- manifest.mf
这时候,需要到 test 目录的上级目录中去使用 jar 命令来创建 JAR 文件包。也就是在目录树中使用“==”表示的那个目录中,使用如下命令:
jar cvfm test.jar manifest.mf test
之后在“==”目录中创建了 test.jar,这个 test.jar 就是执行的 JAR 文件包。运行时只需要使用 java -jar test.jar 命令即可。
Main-Class: 可执行主类全名(包含包名)
例如,假设上例中的 Test.class 是属于 test 包的,而且是可执行的类 (定义了 public static void main(String[]) 方法),那么这个 manifest.mf 可以编辑如下:
Java图形界面编程及生成exe文件
Java图形界面编程实战及生成exe文件1、使用Frame编程public class Base64Util extends Frame{Panel p=new Panel();Label l1;Label l2;TextField tf1;TextField tf2;Button bt1;Button bt2;public Base64Util(String title) {super(title);p.setSize(500, 300);p.setLocation(0, 0);p.setLayout(null);l1=new Label("请输入字符");l1.setLocation(50, 50);l1.setSize(150, 20);l2=new Label("转化为base64位为:");l2.setLocation(50, 100);l2.setSize(150, 20);tf1=new TextField();tf1.setLocation(200, 50);tf1.setSize(150, 20);tf2=new TextField();tf2.setLocation(200, 100);tf2.setSize(150, 20);bt1=new Button("转化");bt1.setLocation(100, 150);bt1.setSize(50, 20);bt1.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e) {BASE64Encoder encoder=new BASE64Encoder();tf2.setText(encoder.encode(tf1.getText().getBytes()));}});bt2=new Button("重置");bt2.setLocation(250, 150);bt2.setSize(50, 20);bt2.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e) {tf1.setText("");tf2.setText("");}});p.add(l1);p.add(l2);p.add(tf1);p.add(tf2);p.add(bt1);p.add(bt2);setLayout(null);setSize(500, 300);add(p);setVisible(true);setResizable(false);addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);}});}public static void main(String[] args) {Base64Util base64Util=new Base64Util("base64编码器");}}2、文件的导出和生成exe文件1)利用Eclipse的Export工具将java文件导成.jar文件2)利用exe4J将.jar文件生成exe文件利用,生成想要的exe文件的图标准备一张图片,用来在文件加载时显示的图片第一步:欢迎界面第二步:选择“JAR in EXE”mode第三步:设置exe4J的应用程序名(随便填)和输出文件夹第四步:输入exe的名称及icon图标第五步:选择.jar文件和main文件第六步:选择支持该程序的最低的jdk版本第七步:选择exe4J splash screen,设置启动时的显示图片第八步:语言选择第九步:完成。
javaSwing打包成exe可安装文件(可在无jdk环境机器上运行)
先用exe4j(此处用的是4.4.4版本)将jar打包成exe可执行文件,之后用Inno Setup(此处是5.5版本)将exe文件及jre打包成可安装文件,使其可在没有java环境的机器上运行1、先将所用到的系统资源放到一个资源文件夹中,如数据库、图片、声音文件、jre等等2、将系统制作成jar包,用fatjar打包工具将系统打包,选择导出路径,选择改程序的Main 方法(如图一红框),点击next选择要导出的资源,之后到finish完成打包,将打出的jar包放到资源文件夹中(便于其后打包成可安装文件)图一3、运行exe4j软件,点击next到下一步,选择第一项Regular mod,后点击next进行下一步(如图二),上面输入工程名,可随意写,下面选择打包后的exe文件的输出路径,完成后点击next进行下一步图二4、如图三,先选择执行方式,默认是图形方式GUI application,Executable name写打包后的exe文件名称,Icon File 选择生成文件的ico图示,后面三个根据需要选择,完成后点击next进行下一步图三5、点击右边的“+”号,在弹出框中选择Archive,并选择先前导出的jar包(如图五),选中后点击OK即可,之后选择改程序的主方法,(如图六),完成后点击next进入第6步图五图六6、填入最低jre版本,最高版本可不填,选择Advanced Options 下的Search sequence选择jre,由于我们要在没有安装jre的机器上运行,故需要将jdk环境动态打包到系统中,如图七,将列表中所有项目移除,然后点击右边的“+”选择刚才在资源文件夹中放置的jre文件夹,如图八,点击OK选择,之后的效果如图九所示,点击next进入图七图八图九再从图中单击advanced options,并选择preferred VM,选择Client Hotspot VM(如图十),之后点击next进入第7步图十7、配置Splash screen ,如果不需要则选择No splash screen 即可,之后一直点击next至finish,如果出现如图十一的界面,则说明已经导出exe文件现在已经完成了exe文件的打包,此程序可在本机上直接运行,但如果想让其在没有jdk 环境的机器上运行,那么还需要利用Inno Setup 将exe文件及jre打包,下面进行这个步骤,此处用的是Inno Setup5.51、运行Inno Setup 编译器,选择脚本向导点确定进入如下界面2、点击下一步进入如下界面,输入个项信息后点击下一步3、维护下图中各项内容后点击下一步4、首先选择程序执行文件,即上面用exe4j导出的exe文件,然后点击添加文件夹,选择我们做好的资源文件夹,务必将所有需要的东西都放进去,完成后显示下图所示界面,然后点击下一步5、根据自己的需要,选择对应的项目,如下图所示,完成后继续点击下一步6、应用程序文档及安装语言的设置在此处就不作介绍了,直接进入编译设置,如下图,将个个信息维护完毕后连续点击下一步直至完成7、系统会出现如下图所示的界面,选择是进行脚本编译8、在编译完成后即可得到一个可安装文件,其后不必说了,直接安装使用。
InstallAnyWhere将Java桌面应用程序打包成可执行的exe程序且无需本机JRE
如何将java应用程序(桌面应用程序),打包成可执行的exe应用程序(安装卸载),且无需本机jre?1 将工程打包成jar文件MineSweeper(右击工程)》》Export》》Java》》Runnable JAR file》》NextLaunch Configuation:选择工程主函数入口类(StartFrame)Export Destination:工程(jar包)存放路径Finish ……OK2 将导出的jar文件、工程所需要的资源文件(image或者其他文件)、工程的运行环境(JRE),拷贝到同一个文件中。
3 使用InstallAnyWhere 工具将工程打包成一个可安装运行、可卸载的exe应用程序下载地址:/soft/21747.htmlCreate New Project>> 默认…点击Save As 选择/创建即将创建的工程存放路径>>SaveNext>>输入需要创建的应用程序的相关信息Next》》Add Files 刚刚准备的所有文件Next》》Auto 自动选择工程主函数入口类,选中Icon》》应用程序使用的图标,可更改Next》》ClassPath 配置,选中jar包,Auto自动Next》》with VM 包含JRENext》》Build 开始构建exe应用程序Try IT 尝试安装打包好的exe应用程序,看看能不能运行,或者将其卸载!最终打包好的exe安装包存放路径:E:\InstallAnyWhereProject\First\First_Build_Output\Web_Installers\InstData\Windo ws\VM…有个问题就是JRE很大70-80M,导致打包好的程序也很大,虽然可能实际上你写程序很小,避免这问题就要去为你的JRE瘦身(将不需要的东西拿掉),但这过程比较复杂,有兴趣自己去试试!我这边用的是Install AnyWhere ,当然还有些其他的方式,比如EXE4J……自己去研究吧!。
使用jpackage将java程序打包成exe程序(不需要安装jdk即可运行)
使⽤jpackage将java程序打包成exe程序(不需要安装jdk即可运⾏)前⾔突然想到把java打包成windows上可以运⾏的程序,于是乎,在搜索引擎和各路博客以及官⽅⽂档的帮助下,终于实现了⽬标,虽然不算完美,但在这个过程中对maven打包过程,jdk打包jar的理解加深。
maven只是更⽅便的帮助我们打包的⼯具,于是开始尝试直接使⽤jdk打包。
接着尝试使⽤maven打包,再使⽤jpackage打包成exe安装包。
然后⼜希望打包成绿⾊版的exe(就是⽆需安装直接运⾏的),结果打包完发现⽂件太⼤,⽽且每次修改都要打包,时间太长。
尝试直接使⽤编译好的class运⾏java程序,修改完类就可以直接替换,⽆需打jar包和再次转成exe。
过程中⼜发现jpackage打包的整个⽂件有很多重复的dll⽂件,⼜发现了runtime⽂件夹。
想到使⽤jre可以直接运⾏java程序,⼜发现这些dll和jre中的⽂件⾼度重合,于是想到直接将jre和class直接打包到⼀起,使⽤脚本命令来启动java程序。
这样⼜使整个运⾏所需的⽂件夹⼤⼩直接减⼩了⼏⼗MB,打包⽂件从最开始的200+MB,最终缩⼩到了 70MB,哎,就是玩⼉。
1.安装wix 3.XX下载⼆进制包(wix311-binaries.zip)解压并添加根⽬录路径到环境变量path中(D:\Program\openjdk\wix)2.打包成便携执⾏程序()⽬录结构在空⽩处按住shift,单击右键,选择“在此处打开powershell窗⼝”执⾏.\jdk-14.0.1\bin\jpackage -i .\planewar --type app-image -n planewar --main-jar .\planewar\plane-war-1.0-SNAPSHOT.jar --vendor cy --verbose --win-console选项说明:# -i: 存放待打包资源的⽂件夹# -type: win下默认是exe,其他的有msi、app-image# -n: 打包后的程序名称# --main-jar 包含启动类(main)的jar包,如果jar包不是可执⾏的jar,则需要⼿动指定主类# --main-class ⼿动指定主类,例如: --main-class com.xxx.AppMain# --vendor 供应商信息(随便填)# --verbose 显⽰打包过程# --win-console 添加控制台输出3.打包成安装程序将需要打包的资源放进⽂件夹planewar执⾏打包.\jdk-14.0.1\bin\jpackage -i .\planewar -n planewar --main-jar .\planewar\plane-war-1.0-SNAPSHOT.jar --vendor cy --verbose --win-console --win-dir-chooser --win-shortcut选项说明:# -i 表⽰输⼊⽂件夹# -n 表⽰应⽤名称# --main-jar 指定jar包,需要jar已经指定main类,否则需要添加--main-class⼿动指定,如:--main-class com.demo.DemoApplication# --vendor 发⾏商信息# --verbose 显⽰打包执⾏过程# --win-console 使⽤控制台输出# --win-dir-chooser 选择安装位置# --win-shortcut 创建快捷⽅式#其他的选项如下:# –win-dir-chooser, 安装时添加 “选择安装路路径”# –win-shortcut, 安装后⾃动在桌⾯添加快捷键# –win-menu-group, 启动该应⽤程序所在的菜单组 (实测⽆效,但是必须有这条命令,没有–win-menu 会报311错误)# -update 2021-2-18: –win-menu-group 应该放在–win-menu 之后,否则⽆效。
java生成exe
编写java我用java编译helloworld.java生成.class文件,但每次想运行文件,悬赏分:20 - 解决时间:2007-6-9 15:35都要用java helloworld,不生成点击运行的exe文件,我要如何做永久生成点击运行的文件,具体步骤提问者:xs54168 - 一级最佳答案说简单一点//建一个类Test.java//再一个文本文件main.txt//main.txt中写入main-class:<空格> Test <加一个空行>//dos 到当前目录//执行jar cvfm mm.jar *.*//将生成可执行文件mm.jar 双双击运行--------------------------------------------------------有问题再看看下边的吧首先列表一下环境:D:\abc\myFrame.class(这个myFrame.class 就是我要运行的程序,当然里面必须包含有main方法啦,有一点还要申明:这个myFrame.class 里是没有打包的,也就是没有pachage 语句进行包申明)好了,开始做事吧在D:\abc 下面建立一个文件名字可以是任意的,什么阿猫,阿狗都没问题,而且有没有扩展名,也是没关系的,但你总不至于是exe 、jar 什么的吧?那你也太专牛角尖了吧,比如名字为:ddd.jjj 或fff 都没问题,我就给这个文件取名:xx.x好了现在的任务就是在你刚建立的文件里写点东西。
在里面写上:main-class:myFrame现在呢,就有N多需要注意的或不需要注意的地方了:1.main-class: 这些字呢,大小写是不区别的,但你不要给我把“-”给丢了!2.myFrame 千万不要写成myFrame.class ,而且myFrame 大小写敏感的!3.“main-class:myFrame” 这一行必须是单独一行的,而且这行不能是最后一行,文件最后留个空行,也许你什么都干得出来,你也可以不用空行,你却写上一些&U&()*^^&*%%*&^(^) 系统也懒得管你!4.最重要的,最容易忽略的,就是在main-class: 的后面必须有大于1的个数的空格,如:main-class: xx.x好了现在就开始用jar了首先打开ms-dos(开始里的运行输入cmd 回车)进入到D:\abc下面(cd d:\abc 回车)然后输入:jar cvfm mm.jar xx.x myFrame.class如: D:\abc\>jar cvfm mm.jar xx.x myFrame.class然后回车,应该就ok了!当然这个命令也可以有多种样式的写法,如:jar cvfm mm.jar xx.x *jar cvfm mm.jar xx.x *.*jar cvfm mm.jar xx.x *.class需要注意的地方是:xx.x 这个文件必须所有的要被包含的文件的前面,换句话就是必须紧跟在你要建立的jar文件名的后面,比如我这里就是mm.jar还有就是如过xx.x这个文件有扩展名就必须写上扩展名,没有就不写整行命令里面可以变动顺序的就只有你的那些要包含的程序文件(xx.x 不包含在内,它不是你的应用程序的一部分),比如你的应用程序要用到几个类(a1.class a2.class a3.class ) 命令可以这样:jar cvfm mm.jar xx.x a1.class a2.class a3.classjar cvfm mm.jar xx.x a1.class a3.class a2.classjar cvfm mm.jar xx.x a2.class a1.class a3.class......或者方便点:jar cvfm mm.jar xx.x *.class还有:cvfm 你照抄就好了不好改什么上面讲的都是没有用package 包机制的其实用包的程序也变化不大要注意的地方:比如文件位置为:D:\abc\nn\myFrame.class(myFrame.java里面开头一句是: package nn;看清楚上面我写的文件位置)你只要把nn\myFrame 看成是上面讲的myFrame 就一样了在D:\abc\>下运行jar cvfm ee.jar xx.x nn注意:1.是在abc下运行,不是在nn下!2.xx.x 文件是在abc下面,而不是在nn下面3.xx.x里面的main-class:myFrame 要换成main-class:nn/myFrame或main-class:nn.myFrame4.记得也要在main-class:........的后面行有空行或有内容的行(anything will ok)关于Java如何生成安装文件给用户的问题?悬赏分:10 - 解决时间:2007-1-13 11:41众所周知java需要JDK等运行环境才能允许?现在我用JBuilder做完了一个桌面C/S模式的应用程序只能用JBuilder运行...我如何不用再给用户去装JDK什么的给用户的时候用户只要直接点击下一步下一步就可以完成软件的安装并正常使用呢?提问者:yangxin114 - 一级最佳答案将Java应用程序本地编译为EXE的几种方法(推荐使用JOVE和JET)1. 从获得一个TowerJ编译器,该编译器可以将你的CLASS文件编译成EXE文件。
