- 浏览: 49042 次
- 性别:
- 来自: 上海
文章分类
最新评论
Java程序完成以后,对于Windows操作系统,习惯总是想双击某个exe文件就可以直接运行程序,现我将一步一步的实现该过程.最终结果是:不用安装JRE环境,不用安装数据库,直接双击一个exe文件,就可以运行程序.
下面我将以我最近写的一个程序作例子,进行该打包过程.
该程序是使用了:Hibernate,Spring,Derby的Java GUI.(JDK需要1.6版本,因该版本才有Derby),我使用的是Eclipse进行开发.
第一步:完成Java GUI程序
在Eclipse下,程序能够正常运行.
第二步:准备清单文件(MANIFEST.MF)
方法1:直接拷贝其它能运行的JAR文件中的MANIFEST.MF进行修改
方法2:利用IDE工具,如Eclipse在生成JAR文件时自动生成
MANIFEST.MF内容如下:
Manifest-Version: 1.0
Main-Class: manager.ui.MainFrame
Class-Path: ./lib/spring.jar ./lib/hibernate.jar ./lib/derby.jar
SplashScreen-Imager: manager/resources/images/splash.jpg
说明:
Manifest-Version - 指定清单文件的版本号
Main-Class -指定程序运行的入口类。注意:类名后不要加class扩展名
Class-Path -指定支持库的路径。“.”指程序运行目录,即导出的JAR包所在目录。程序运行时依据Class-Path项的设置路径来查找支持库。每一个支持库之间用空格隔开。在这里使用了hibernate,spring,derby.
注意:
1.如果Java应用程序用到了一些Eclipse包,那么就必须将这些包也复制到程序运行目录,设置到Class-Path,否则程序将无法运行.引用了一些外部组件也需要如此设置,如hibernate,spring,derby.
2. 除了入口类的包名和类名之外,其他设置项都不分大小写,比如:Class-Path写成class-path或CLASS-PATH也可以,swt.jar写成SWT.JAR也行。
3.类名后不要加class扩展名
4.每一行的':'后都有一个空格,如Class-Path:<空格>./lib/spring.jar
5.Class-Path中.引入的JAR文件每行不得超过19个,否则会报错.但在让人意外的是每行只有前9个有效,故将所有同类型的JAR 文件做成一个JAR文件.如我这里的spring.jar,hibernate.jar,derby.jar都是同类JAR文件的组合.
第三步:修改spring配置文件
在spring的 'sessionFactory' bean的配置中则要这样写(与程序中ClassPathXmlApplicationContext对应)
<property name="mappingLocations">
<list>
<value>manager/entity/MyFile.hbm.xml</value>
<value>manager/entity/FileType.hbm.xml</value>
...
</list>
</property>
第四步:使用Eclipse生成JAR文件
1.右键单击项目名,在弹出菜单中选择“Export”。在弹出的如下图所示的对话框中,选择“JAR文件”,单击“Next”
2.将右边不需要的文件都取消勾选。在“选择导出目标(Select the export destination)”项文本框中设置JAR包的输出路径和包名(可以任意取名)为“D:\manager\manager.jar”。接受其他的默认设置不变,单击“Next”。
附注:左边虽然选择了src目录,但源文件并不会导出到包中,除非勾选了“导出Java源代码文件和资源(Export java source files and resources)”项。
3.接受默认设置不变,单击“Next”
4.这一步较关键。如下图所示,选择“从工作空间中使用现有清单”项,将创建的清单文件输入,也可以通过旁边的“浏览”按钮来选择清单文件。输入清单文件后,单击“Finish”,Eclipse开始将项目打包。
附:这里也可以选择Generate the manifest file.但生成的清单文件MAINFEST.MF需要修改.
注意:清单文件MAINFEST.MF一定要按第二步那样设置.
生成的JAR文件目录如下:
第五步:生成运行manager.jar的批处理文件manager.bat(该步可以不要)
在manager目录下创建一个批处理程序manager.bat(名字任取,扩展名必须是bat),其内容仅一句语句,如下:
javaw -jar manager.jar
说明:
1.javaw对应c:\jdk\jre\bin\javaw.exe文件,如果windows提示命令未发现,则需要将c:\jdk\jre\bin路径加入到windows环境变量path中。
2.在运行程序的时候有一个讨厌的黑色命令行窗口,要去掉它,可以将run.bat内容更改如下:“start javaw -jar manager.jar”,start是指调用了windows的“运行”命令。
3.在后边加一个pause就可以让你看到具体哪里出错了,如:
start javaw -jar manager.jar
pause
双击manager.bat,就可以运行该JAR文件了
第六步:让电脑不必安装JRE环境,也能运行.
通常运行Java程序有个前提条件:用户电脑必须先安装JRE环境。虽然安装JRE环境非常简单,但毕竟多了一步,算是有一点点的瑕疵。这里给出一个不必让用户安装JRE环境的方法,其实现步骤如下:
(1)将原JDK中的“jre”目录复制到“D:\manager\java”目录下(java也可换成其他名称)。
(2)将JDK和JRE从本机卸载掉,这样表示本机没有安装JAVA运行环境。
(3)修改批处理文件manager.bat中的命令为“start java\jre\bin\javaw -jar manager.jar”,仅仅是在javaw前加上了一个相对应路径。
双击manager.bat即可在不安装JRE环境的电脑运行此Java应用程序。
第七步:抛弃批处理文件(*.bat),生成exe文件
用批处理文件运行程序似乎不够专业,虽然它足以完成运行任务。但习惯就象一种毒药一旦染上就很难摆脱它的影响,Windows统治下的人们早已经习惯运行扩展名是EXE的程序,用*.bat他们就会感觉别扭。
我们可以用一个叫JavaLauncher的免费小程序来代替批处理文件去运行Java程序。JavaLauncher的下载网址是:
http://www.rolemaker.dk/nonRoleMaker/javalauncher/marner_java_launcher.htm
下载下来的文件是一个名JavaLauncher.zip的压缩包,解压后的目录结构如下所示:
JavaLauncher.zip目录结构
source 目录包含了JavaLauncher的源程序,是用C语言写的
changes.txt 是新版的修改说明
launch.exe 是主程序
launcher.cfg 是配置文件
readme.txt 是一些说明和示例
我们只需要launch.exe、launcher.cfg两个文件,将这两个文件复制到打包文件所在的目录。launcher.cfg是一个仅三行内容的文本文件,将它修改如下:
.\java\jre\bin\javaw.exe
-jar manager.jar
第一行设置指向JAR包managger.jar的目录,由于launch.exe和myswt.jar同在一个目录,所以用“.”即当前目录。
第二行设置指向jre\bin\javaw.exe的路径。在上面已将jre目录复制到了java子目录中
配置好launcher.cfg后,双击launch.exe即可运行java应用程序。
如果仔佃研究eclipse的启动方式,发现eclipse和JavaLauncher的原理一样:eclipse.exe相当于 launch.exe,startup.jar相当于manager.jar。只不过eclipse.exe不象launch.exe要具有通用性,所以它没有*.cfg这样的配置文件,而是将启动信息固化在eclipse.exe中。
第八步:美化图标
launch.exe文件的图标太单调了,让我们给它换个好看点的。换程序的图标需要用到一个免费的软件:Resource Hacker.
第九步:最后的打包
发送给用户之前,通常要用WinZip或WinRAR将所有的文件全部打成一个压缩包,然后用户得到这个压缩包后,将其解压缩后即可运行程序,Eclipse软件就是这种方式。
另一种方式是用InstallShield、InstallAnyWhere这样的安装程序制作软件来创建一个单一的setup.exe文件,它具有向导式的安装界面,而且还可以往windows的程序栏插入菜单项,关于这些安装程序制作软件的具体使用请参阅相关书籍。
下面我将以我最近写的一个程序作例子,进行该打包过程.
该程序是使用了:Hibernate,Spring,Derby的Java GUI.(JDK需要1.6版本,因该版本才有Derby),我使用的是Eclipse进行开发.
第一步:完成Java GUI程序
在Eclipse下,程序能够正常运行.
第二步:准备清单文件(MANIFEST.MF)
方法1:直接拷贝其它能运行的JAR文件中的MANIFEST.MF进行修改
方法2:利用IDE工具,如Eclipse在生成JAR文件时自动生成
MANIFEST.MF内容如下:
Manifest-Version: 1.0
Main-Class: manager.ui.MainFrame
Class-Path: ./lib/spring.jar ./lib/hibernate.jar ./lib/derby.jar
SplashScreen-Imager: manager/resources/images/splash.jpg
说明:
Manifest-Version - 指定清单文件的版本号
Main-Class -指定程序运行的入口类。注意:类名后不要加class扩展名
Class-Path -指定支持库的路径。“.”指程序运行目录,即导出的JAR包所在目录。程序运行时依据Class-Path项的设置路径来查找支持库。每一个支持库之间用空格隔开。在这里使用了hibernate,spring,derby.
注意:
1.如果Java应用程序用到了一些Eclipse包,那么就必须将这些包也复制到程序运行目录,设置到Class-Path,否则程序将无法运行.引用了一些外部组件也需要如此设置,如hibernate,spring,derby.
2. 除了入口类的包名和类名之外,其他设置项都不分大小写,比如:Class-Path写成class-path或CLASS-PATH也可以,swt.jar写成SWT.JAR也行。
3.类名后不要加class扩展名
4.每一行的':'后都有一个空格,如Class-Path:<空格>./lib/spring.jar
5.Class-Path中.引入的JAR文件每行不得超过19个,否则会报错.但在让人意外的是每行只有前9个有效,故将所有同类型的JAR 文件做成一个JAR文件.如我这里的spring.jar,hibernate.jar,derby.jar都是同类JAR文件的组合.
第三步:修改spring配置文件
在spring的 'sessionFactory' bean的配置中则要这样写(与程序中ClassPathXmlApplicationContext对应)
<property name="mappingLocations">
<list>
<value>manager/entity/MyFile.hbm.xml</value>
<value>manager/entity/FileType.hbm.xml</value>
...
</list>
</property>
第四步:使用Eclipse生成JAR文件
1.右键单击项目名,在弹出菜单中选择“Export”。在弹出的如下图所示的对话框中,选择“JAR文件”,单击“Next”
2.将右边不需要的文件都取消勾选。在“选择导出目标(Select the export destination)”项文本框中设置JAR包的输出路径和包名(可以任意取名)为“D:\manager\manager.jar”。接受其他的默认设置不变,单击“Next”。
附注:左边虽然选择了src目录,但源文件并不会导出到包中,除非勾选了“导出Java源代码文件和资源(Export java source files and resources)”项。
3.接受默认设置不变,单击“Next”
4.这一步较关键。如下图所示,选择“从工作空间中使用现有清单”项,将创建的清单文件输入,也可以通过旁边的“浏览”按钮来选择清单文件。输入清单文件后,单击“Finish”,Eclipse开始将项目打包。
附:这里也可以选择Generate the manifest file.但生成的清单文件MAINFEST.MF需要修改.
注意:清单文件MAINFEST.MF一定要按第二步那样设置.
生成的JAR文件目录如下:
第五步:生成运行manager.jar的批处理文件manager.bat(该步可以不要)
在manager目录下创建一个批处理程序manager.bat(名字任取,扩展名必须是bat),其内容仅一句语句,如下:
javaw -jar manager.jar
说明:
1.javaw对应c:\jdk\jre\bin\javaw.exe文件,如果windows提示命令未发现,则需要将c:\jdk\jre\bin路径加入到windows环境变量path中。
2.在运行程序的时候有一个讨厌的黑色命令行窗口,要去掉它,可以将run.bat内容更改如下:“start javaw -jar manager.jar”,start是指调用了windows的“运行”命令。
3.在后边加一个pause就可以让你看到具体哪里出错了,如:
start javaw -jar manager.jar
pause
双击manager.bat,就可以运行该JAR文件了
第六步:让电脑不必安装JRE环境,也能运行.
通常运行Java程序有个前提条件:用户电脑必须先安装JRE环境。虽然安装JRE环境非常简单,但毕竟多了一步,算是有一点点的瑕疵。这里给出一个不必让用户安装JRE环境的方法,其实现步骤如下:
(1)将原JDK中的“jre”目录复制到“D:\manager\java”目录下(java也可换成其他名称)。
(2)将JDK和JRE从本机卸载掉,这样表示本机没有安装JAVA运行环境。
(3)修改批处理文件manager.bat中的命令为“start java\jre\bin\javaw -jar manager.jar”,仅仅是在javaw前加上了一个相对应路径。
双击manager.bat即可在不安装JRE环境的电脑运行此Java应用程序。
第七步:抛弃批处理文件(*.bat),生成exe文件
用批处理文件运行程序似乎不够专业,虽然它足以完成运行任务。但习惯就象一种毒药一旦染上就很难摆脱它的影响,Windows统治下的人们早已经习惯运行扩展名是EXE的程序,用*.bat他们就会感觉别扭。
我们可以用一个叫JavaLauncher的免费小程序来代替批处理文件去运行Java程序。JavaLauncher的下载网址是:
http://www.rolemaker.dk/nonRoleMaker/javalauncher/marner_java_launcher.htm
下载下来的文件是一个名JavaLauncher.zip的压缩包,解压后的目录结构如下所示:
JavaLauncher.zip目录结构
source 目录包含了JavaLauncher的源程序,是用C语言写的
changes.txt 是新版的修改说明
launch.exe 是主程序
launcher.cfg 是配置文件
readme.txt 是一些说明和示例
我们只需要launch.exe、launcher.cfg两个文件,将这两个文件复制到打包文件所在的目录。launcher.cfg是一个仅三行内容的文本文件,将它修改如下:
.\java\jre\bin\javaw.exe
-jar manager.jar
第一行设置指向JAR包managger.jar的目录,由于launch.exe和myswt.jar同在一个目录,所以用“.”即当前目录。
第二行设置指向jre\bin\javaw.exe的路径。在上面已将jre目录复制到了java子目录中
配置好launcher.cfg后,双击launch.exe即可运行java应用程序。
如果仔佃研究eclipse的启动方式,发现eclipse和JavaLauncher的原理一样:eclipse.exe相当于 launch.exe,startup.jar相当于manager.jar。只不过eclipse.exe不象launch.exe要具有通用性,所以它没有*.cfg这样的配置文件,而是将启动信息固化在eclipse.exe中。
第八步:美化图标
launch.exe文件的图标太单调了,让我们给它换个好看点的。换程序的图标需要用到一个免费的软件:Resource Hacker.
第九步:最后的打包
发送给用户之前,通常要用WinZip或WinRAR将所有的文件全部打成一个压缩包,然后用户得到这个压缩包后,将其解压缩后即可运行程序,Eclipse软件就是这种方式。
另一种方式是用InstallShield、InstallAnyWhere这样的安装程序制作软件来创建一个单一的setup.exe文件,它具有向导式的安装界面,而且还可以往windows的程序栏插入菜单项,关于这些安装程序制作软件的具体使用请参阅相关书籍。
发表评论
-
转:Jetty 的工作原理以及与 Tomcat 的比较
2012-02-09 00:41 841介: Jetty 应该是目前最活跃也是很有前景的一个 Serv ... -
response.setHeader()的用法
2011-01-14 15:12 757response.setHeader()下载中文文件名乱码问题 ... -
Java核心API需要掌握的程度
2010-11-06 20:33 615Java的核心API是非常庞大的,这给开发者来说带来了很大的方 ... -
j2ee1.4和javaee5区别,jstl1.1和jstl1.0区别
2010-10-01 19:50 962TOMCAT SERVLET JSP ... -
SSH中Transaction not successfully started解决方法
2010-09-27 16:54 1627org.springframework.transaction ... -
System.getProperties();各操作系统取值
2010-09-14 09:06 838我试验的数据: JB8 + XP2003 server = W ... -
System.getProperty()
2010-09-14 08:54 664public class Information { ... -
class.getResource()的用法
2010-08-20 09:02 600用JAVA获取文件,听似简单,但对于很多像我这样的新人来说, ... -
classloader相关基础知识(转载)
2010-08-16 14:19 629jvm是jre里头一个动态连 ...
相关推荐
Java程序打成Jar包全过程,供大家参考学习使用
在Java开发过程中,将编译后的`.class`文件打包成`.jar`文件是常见的操作,这有助于代码的分发、部署和执行。`.jar`文件是Java的可执行归档文件,它包含了类文件、资源文件以及元数据,使得用户可以方便地运行Java...
下面我们将详细讲解这个全过程。 首先,Java Swing是Java平台上的一个图形用户界面(GUI)工具包,它提供了丰富的组件和布局管理器,用于构建桌面应用程序。Swing是完全Java化的,可以在任何支持Java的平台上运行,...
在Java编程环境中,将一个.jar(Java Archive)文件转换为可执行文件,通常是将它封装成Windows下的.exe可执行程序,以便非Java开发者也能轻松运行。这个过程涉及到几个关键步骤和工具,以下是一个详细的教程: 1. ...
在IT行业中,开发Java应用程序时常需要将代码打包成JAR(Java Archive)文件,以便于分发、部署或运行。MyEclipse6.5是一款功能强大的集成开发环境(IDE),支持多种Java应用的开发和打包。本文将详细介绍如何在...
以上就是使用exe4j将jar包打包成exe文件的详细过程。通过这种方式,你可以为用户提供一个无需Java环境即可运行的应用,简化了他们的使用体验。同时,记得在打包过程中充分考虑用户体验,如错误处理、帮助文档等,以...
其中,“打包”功能是Idea的一个重要特性,能够方便地将项目编译成可执行的jar包或war包等,便于程序的分发和运行。 #### 一、为什么要使用Idea进行打包? 1. **便捷性**:通过Idea内置的功能可以直接完成项目的...
在IT行业中,开发Java应用程序时,我们经常需要将项目打包成可执行的JAR(Java Archive)文件,以便于分发、部署或测试。Eclipse作为一款强大的Java集成开发环境,提供了多种方式来实现这个目标。本文将详细介绍如何...
在将Java项目打包成jar文件的过程中,可能会遇到各种问题,尤其是在涉及AspectJ的情况下。如果AspectJ的特性没有在打包过程中得到正确的处理,那么在运行时,应用可能无法正确地识别和应用切面,导致功能不全或错误...
在IT行业中,开发Java应用程序时,常常需要将代码打包成JAR(Java Archive)文件,以便于分发、部署和执行。MyEclipse作为一款强大的Java集成开发环境,提供了便捷的方式来创建JAR包。以下是对如何使用MyEclipse打...
通过以上步骤,你可以在Eclipse中轻松地将Java工程打包成JAR文件,无论是作为类库供其他项目使用,还是作为可执行程序独立运行。在实际开发中,确保正确处理依赖关系和配置,以便于软件的分发和使用。同时,了解并...
当我们想要将Java应用程序打包成可执行的JAR文件时,Maven提供了方便的插件来实现这一目标。在本篇内容中,我们将深入探讨如何使用Maven 3进行JAR文件的打包,并了解相关的配置和步骤。 【描述】: 虽然描述中没有...
例如,可以自定义一个Maven插件,调用`EncryptionUtil`的`encrypt()`方法,将编译后的字节码加密,然后再打包成JAR。 4. **解密运行时**:当运行加密的JAR文件时,需要在应用启动之前先解密。这可以通过修改Spring ...
标题中的“生成可双击运行的Jar文件”指的是在Java开发中将编译好的类文件打包成一个可执行的JAR(Java Archive)文件,这样用户可以通过双击该JAR文件来直接运行Java应用程序。这一过程涉及到Java的打包工具如jar...
- fatjar是Java项目的一种打包方式,它可以将主程序以及所有依赖的jar包一起打成一个单独的jar文件。 - 这种打包方式特别适合于微服务或者独立运行的应用程序,能够简化部署过程,避免因缺少依赖而导致的问题。 2...
在Java开发过程中,IDEA(IntelliJ IDEA)是一款广泛使用的集成开发环境。然而,在将项目打包成可执行的jar文件时,有时会遇到“找不到或无法加载主类 main”的错误。本文将详细讲解如何在IDEA中正确打包jar文件,并...
".classpath"和"MANIFEST.MF"文件是构建和运行Java项目的关键,前者定义了项目的所有类路径依赖,后者在打包成JAR文件时用于指定主类和其他元数据。 "lib"目录下存放的是项目所依赖的第三方库,除了JTDS,可能还有...
3. **icepdf-viewer.jar**:这是一个PDF查看器组件,用于在Java应用程序中显示PDF文档。它提供了基本的导航功能,如页面跳转、缩放等,并且可以自定义界面和交互行为。 4. **icepdf-pro.jar**:专业版,除了基础...
在Java开发过程中,掌握一些常用的命令行指令是十分必要的,这些指令可以帮助开发者高效地进行编译、运行、调试以及管理项目。"Java开发常用指令全集.zip"包含了关于Java开发中的一些基本和进阶指令的详细说明,这些...