《jjava程序打包jre以及制作安装包精品资料.doc》由会员分享,可在线阅读,更多相关《jjava程序打包jre以及制作安装包精品资料.doc(57页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Java project 打包以及安装包制作Java的桌面程序写好以后只能在eclipse下运行是不可以的,还需要将程序拷贝到其他电脑上运行才可以,所以需要制作成其他电脑可以运行的文件,当然在安装有jdk的电脑上只需要将程序导出为jar文件就可以运行了,但是除了开发java程序人员的电脑上会安装jdk,其他人的电脑上不会有这个环境,所以还需要将java可运行的环境一同打包到程序中去,这样,在用户不安装jdk的情况下也可以运行。制作可执行文件的过程一、首先程序写好后导出jar文件1. 在eclipse中右键工程文件,选择Export2. 选择导出为runnable jar file,然后next
2、3. 选择应用程序的主入口窗口,保存jar的路径,导出文件的方式,选择第一个第二个都可以,他们都包含程序所需要的库文件,第一个导出的好处是防止程序被反编译,第二个可以保留原有的文件结构,然后finish4. 找到导出后的jar文件,如图二、使用java命令运行这个文件1. 打开命令提示符窗口,找到jar的目录2. 使用 java jar命令运行这个jar文件3. 回车看到程序运行起来4但是程序没有图片,仔细看jar包的大小可以猜测没有资源文件,用WinRAR查看jar内部结构发现没有这些资源三、程序所需的资源文件拷贝到jar的相同目录1. 找到project中的除src以外需要的文件资源2.
3、将这些文件资源复制到与jar包相同的目录3. 再次运行这个jar文件,发现已经包含了图片等文件4.我们肯定不能让用户这样去运行我们的程序,所以必须要转成可以双击运行的方式。四、将jar文件转换为可以直接双击运行的exe文件1. 将jar文件转为exe文件有一个很好的软件叫做jar2exe,官方下载地址:我们下载绿色版本2. 下载好以后直接解压即可,运行里面的j2ewiz.exe文件3. 看到启动窗口,无需注册直接下一步4. 找到jar的路径,选择最低运行jar文件的版本,点下一步5. 选择windows窗口程序,下一步6. 选择应用程序的进入窗口,设置开启时候的动画(可以不设置动画),下一步7
4、. 忽略所有选择,直接下一步8. 不需要添加依赖的jar包,下一步9. 设置输出的路径文件名,也可以设置exe文件的图标,点下一步10. 如果你电脑上配置好了环境变量,而且不需要把程序拷贝到别的电脑上去运行,那么你可以直接点击完成。11. 如果需要复制到其他没有jre环境的电脑上运行,那么你先保留上面的窗口,复制jre到刚才的jar文件相同的目录,如图:Jre的路径就是你安装jdk的路径,我的是C:Program FilesJavajre1.6.0_07下。12. 然后选择刚才窗口的参数配置按钮,配置jre的路径为jar包的相对路径,如图选择jre设定标签,选择配置文件指定,选择相对路径,然后
5、编辑找到jre中的jvm.dll,然后确定,应用就可以了此时文件夹中会多出一个config文件,这个文件就可以是exe文件引用同目录的jre环境,如图:13. 转换完成以后jar包就可以删除了,双击exe运行,看看效果:14. 为了验证这个程序可以在没有安装jdk的电脑上运行,我们测试一下,打开win7旗舰版的xpmode,xpmode是win7的一个xp的虚拟机,里面是完全的一个xp系统,将文件复制到xp中,如图双击Kejian.exe,看一下效果:16.虽然程序已经完成,但是我们不可能会给用户一个文件夹,然后让用户复制,复制好以后双击exe去运行这个程序,所以接下来我们还要制作安装程序包。
6、五、制作程序安装包1. 制作安装包需要的软件名字叫做Inno Setup,软件完全免费,可以从360安全卫士的软件管家搜索下载,如图:安装的时候编译器选择Unicode版本就可以了,当然选择ansi也可以,但是支持的编码不如Unicode多。2. 安装好以后打开程序选择使用向导创建脚本:3. 直接下一步4. 设置程序名称、程序版本、公司名称、公司网址信息后下一步5. 直接下一步6. 找到exe文件以及exe所在的文件夹,下一步7. 设置程序安装后在用户电脑中显示的文件夹名称以及一些开始菜单等的选项,可以自己选,然后下一步8. 这些设置可选,直接下一步9. 选择简体中文,下一步10. 设置输出路
7、径、安装包名称、安装密码安装文件的图标等信息,可以默认,下一步11. 这一步可要可不要,直接下一步12. 点击完成到此脚本创建完成,执行脚本就可以得到安装程序了。13. 选是14. 可以不保存,自愿,点击后自行编译15. 完成以后如果你选择了保存编译脚本那么在编译脚本相同目录会有一个output文件夹,如果没有保存编译脚本,那么就会在用户的我的文档中有一个output文件夹,里面就是生成的安装文件:16.到这里安装包就制作好了,可以测试一下,方法很简单,就不再写了。附录资料:java重点笔记归纳整理Java初级eclipse快捷键:右键REFACTER-RENAME 一改全改ALT+ENTER
8、 查看现在项目的位置 Alt+ 当前行和下面一行交互位置(特别实用,可以省去先剪切,再粘贴了) Alt+ 当前行和上面一行交互位置(同上) Ctrl+W 关闭当前Editer C+/ 注释(取消注释)选中行C+S+/ 注释多行C+S+取消注释 F2 查看完整的函数帮助信息,并且可以复制粘贴文字 ,当选中文件时,有改名作用 F3找到变量的定义 C+鼠标点击 找到变量的定义 作用和F3C差不多。 F4找到接口方法的具体实现类.=C+T F5刷新 C+F6:在打开的文件间进行切换; C+F7:在资源窗口间进行切换; C+F8:在各种模式间进行切换; C+E:选择某个打开的文件; C+S+r:打开一个
9、文件; c+s+t:打开一个类; c+s+f:格式化代码; C+S+O:导入需要的类 c+o:查看类结构; c+t:列出子类或接口实现类(类的等级结构) Ctrl+Alt+ 复制当前行到下一行(复制增加) Ctrl+Alt+ 复制当前行到上一行(复制增加) CtrlK (加SHIFT是向上)向下查找选中的字符串 Ctrlshift 向上向下查找一个函数和变量 Java基础知识1.Java是Sun公司的JamesGosling发明的面向对象的可跨平台的编程语言。2.SUN公司,Stanford University Network,斯坦福大学;3.平台:我们把cpu处理器与操作系统的整体叫做平台
10、。不同的操作系统支持不同的cpu指令集。不同的cup有不同的指令集,如intel和AMD.4.JDK:Java Software Develop Kit. JVM:Java Virtual Machine.Java虚拟机,包含:类加载器,字节码校验器,java解释器。 JRE:java运行时环境,包含jvm与java运行支持类库。5.环境变量:java_home;classpath:.;C:Javajdk1.6.0_10lib;path6.jdkjdk1.1为jvm增加了JIT(即时编译)编译器;jdk1.2也叫java2;jdk1.5也叫java5(改动较大);现在使用的是jdk1.6。7.
11、jdk,Java Developent ToolKit;开发java需要有源程序文件到中间文件的编译器;运行java中间文件需要对应平台的解释器(官方叫法JVM);编译器、解释器加上一些其它的组件合称为JDK.JDK的另外一个称呼为Java Software develop kit.JDK即开发java程序的组件。jdk=java编译器+jre(java运行环境) jre=jvm+运行支持类库 eclipse和jbuilder本身自带了java编译器但不包含jre。8.jre:Java Runtime Environment,java运行时需要的环境。有两类,开发需要的jre和公共jre。9.
12、jdk版本,jdk1.2到jdk1.4为java2时代,java技术有j2ee,j2se,jeme.jdk1.5,也叫做java5,技术术语改为javase,javaee,javame.1.5在1.4的基础上改动很大。10.常用的DOS命令:dir,现实当前文件夹的所有文件;cd . 打开上级目录;exit:退出。11.java注释:java注释分为三种单行注释,多行注释,文档注释,文档注释结果为:/*换行*/,文档注释在帮助文档里面有显示。12.javadoc帮助文档,javadoc可执行程序可生成帮助文档,用法如下:javadoc Test01.java13.java 打包jar,用法见c
13、md输入jar;ant也是一种打包成jar的工具,其功能叫jar更加强大;除了jar包外,java文件包还有war,ear两种格式。14.java缺点:运行速度慢,占用资源多是java的缺点;其原因是:class需要二次编译,解释执行;jvm运行占用资源;无指针无法直接操作内存,垃圾回收线程占用资源,并且不会实时收集内存。15.JVM,JAVA虚拟机即java解释器;JVM执行.class文件需要三步:类加载器加载;校验器检查错误,执行文件。在执行的时候有两种方法:a.解释器直接执行;b.JIT代码生成器搞定。16.两种解释执行方法的区别:直接解释执行是1.1版本的,其直接翻译class文件,
14、速度必然比机器执行二进制文件的速度慢;1.2版本后引入JIT,即将class文件先转换为二进制文件,再执行二进制文件,下次执行时可直接执行二进制文件。15.JIT(即时编译):java即时编译技术,可执行java代码的运行速度。17.IDE工具 IDE:Integrated Development Environment,集成开发环境。18.开发java的IDE工具:JCREATOR,JBUILDER,ECLIPSE,NETBEANS.20.拷贝项目的三种方式:a.拷贝整个工作空间,切换工作空间。b.拷贝项目,导入项目。c.只拷贝源代码(即src文件夹),从新建的项目导入。22.转义字符:单引
15、号:;双引号:;反斜杠:;回车:n;水平制表符:t;换行:r. 转义字符一般出现在字符串中时,要是以原型输入,则输出一定报错,只有以转换后的才能显示。23.数据类型转换:byte char short int long float double,String,小杯到大杯自动转换,但是大杯到小杯强制转换。一般的格式:标变量=(目标类型)源变量,特殊的,String转换为其它,int a = Integer.parseInt(str1);float b = Float.parseFloat(str2);boolean c = Boolean.parseBoolean(str3);24.内存分配 基
16、本数据类型只在栈中分配内存;应用数据类型不仅在栈中分配内存,还在堆中分配内存,在变量声明时,在栈中分配内存,当创建对象时,在堆中分配内存。25.值传递和引用传递 本人去见网友叫按引用传递;替身去见网友叫做按值传递。引用传递参数数值改变,按值传递参数值不变。基本数据类型就是按值传递的,又称为值类型,而引用类型是按引用传递的。String 虽然是按引用传递的,但是传递给的新变量会有属于自己的堆内存,所以,String值不变。包: 开发中最好在导入包和类的过程中,最好是使用哪个类就导入那个类,不要导入包。27.包的命名规则:反写的企业域名.功能名.模块名28.系统包(SUN提供的包)默认包-java
17、.lang.常用包 java.lang: java的核心类库,包含了运行java程序必不可少的系统类,如基本数据类型、基本数学函数、字符串处理、线程、异常处理类等,系统缺省加载这个包 java.lang.reflect:提供用于反射对象的工具 java.io: java语言的标准输入/输出类库,如基本输入/输出流、文件输入/输出等 java.util:常用的工具类,如集合框架类,日期处理类等。主题:旺旺老师软件工程师实训教程-JAVASE 第六章:包与 JAVA 常用类 java.sql: JDBC相关类。 :JAVA网络包,其中包含能够使程序通过网络进行通信的 java.awt;javax.
18、swing:使用java开发C/S结构应用程序使用的类。29.企业开发中命名规则一般如下: com.easyitedu.dao /持久层代码 com.easyitedu.view /表示层代码 com.easyitedu.biz.student /stuent模块的业务层代码 com.easyitedu.biz.teacher /teacer模块的业务层代码 com.easyitedu.tool /本项目使用的工具类30.包装类:8个值类型对应的有8个类,我们把它们称为包装类。其作用较八种基本类型的作用强大,java不符合面向对象的两个地方:一个是JAVA保留了8个基本数据类型,他们不是对象,
19、更没有属性和方法;另一个就是JAVA中存在着main方法。之所以还在用八种基本类型而不是通通用包装类,是因为一些简单的业务用基本数据类型效率较高,但是有时必须用八个包装包,例如:强制类型转换。 其中byte的包装类是Byte.只有char的类是Character,int 是 Integer.其它像byte一样是其本身。说明:int a = 10; Integer b = new Integer(10);其中,前者占用一块内存,后者占用两块,符合引用传递。自动的拆箱和装箱:把数据由基本数据类型转换为对应包装类叫做装箱,把数据由包装类转化为基本数据类型叫拆箱。实例:int a = 10;Integ
20、er b = a;/自动装箱,基本数据类型-包装类 int c = b;/自动拆箱,包装类-基本数据类型,即两种类型可以自动相互转换,没其它制约。32.String转换成基本型:调用包装类的parse*方法,例如:String a = 12; int a = Integer.parseInt(a);33.=和equals,=比较的是堆内存地址,后者堆内存(即地址可以不同)。equals,用法:常量.equals(变量),要不然会出现空指针异常。34.字符串池:当字符串直接赋值时,(string a = aa;)其堆内存会进入字符串池,当下次在赋值相同时,String b =aa;b会直接引用a
21、的堆内存。但是当赋值为new 方法赋值时,其堆内存不会进入字符串池,而是直接开辟一个新的空间。String c = new String(aa);35.三个空字符串的区别:String a = null;String b = ;String c = ;其中null,没有分配堆内存空间,b分配了堆内存空间,里面放了一个空格;c虽然分配了内存空间,但是没有放东西。36.字符串拼接:不用String 而是用StringBuffer.append(),前者的对内存限定了,改变后重新分配内存;后者可以添加内存。就像前面是不能加车厢的汽车,每次都得换车;后者是可以加车厢的汽车。37.面向对象编程叫OOP,
22、还有一门知识叫OOAD(面向对象的分析与设计),在OOAD中,继承又叫派生,父类又叫超类。38.Override注释:第四种注释,给java编译器看的,在编译阶段提示错误,在重写父类方法时,一般加上此注释,表示此方法是重写的父类方法。39.Deprecated注释:此方法不推荐使用(看文档时),一般会有功能更强大的方法代替。SuppressWarrin40.继承的7点特性:a.子类拥有父类的属性和方法b.子类可以有自己行的属性和方法c.子类可以重写父类的方法d.可以声明父类,创建子类d_1.声明什么类型,就只能调用什么类型的方法d_2.创建什么类型,运行什么类型的方法d_3要使用创建类型的方法
23、,必须得强制转化类型。41.this与super关键字 一般在子类中使用,this表示调用自己声明的属性和方法;super表示父类声明的属性和方法。static方法中不能使用this与super关键字。42.继承中的构造方法 创建对象一定会调用构造方法? 创建子类对象一定会调用父类的构造方法? 子类默认调用父类无参构造方法? 子类只能调用父类存在的构造方法? 子类构造方法中使用super调用父类构造方法,并且super必须放在第一行? 构造方法中this表示调用本类其他构造方法,并且this必须放在第一行43.封装定义:隐藏属性,方法和方法实现细节的过程成为封装。45.方法的说明符 方法的访问
24、说明符 1.public 任何地方都可以访问 2.protected 子类或者同包,同类可以访问,但是其它包的非子类不可以访问 3.default 只有同类或者同包可以访问 4.private 私有的方法,这里的私有指的是被被class所私有,其他类不能访问,继承的类也不行。 方法的其他说明符 1.static 2.final 此方法不可以被子类覆盖。 3.abstract 抽象的方法 4.native 用户可以使用,但是不能编写的类。 5.synchronized 同步的方法面向对象 面向对象的程序开发实际上分为三种:OOA OOD OOP |-OOA:面向对象的分析 |-OOD:面向对象设
25、计 |-OOP:面向对象程序 三大特性:封装、继承、多态。 对象的创建及使用:Person zcy = null;/声明对象 zcy=new Person();/实例化对象 Person zcy = new Person(); 方法不需要创建,直接使用。47.封装性 封装性有很多体现,但是最简单的体现是假如“private”关键字。48.实体类:在开发过程中,有一些类与数据库紧密联系,其叫法有几种,常用的有,entity 实体类;vo类 value object 值传递;dto,data transmission object 数据传输对象。Static49.static普通变量通过对象名.变
26、量访问;而static变量通过类命.变量访问,因为static 修饰的变量为类变量。50.final,当定义一常量时,用final修饰,变量名大写,通常情况下,final修饰,前面加上static,但是反之不成立!51.static方法,静态方法,同样是通过类名.方法名调用。静态方法里面不能调用非静态变量;静态方法下面不能使用this,super等关键字。静态方法中不能访问普通方法,但可以调用静态方法;即静态方法里面不能出现非静态的东西。52.静态块:在虚拟机加载类时就调用,不需要等到创建对象时执行。sun公司不推荐使用。多态53.方法重载相同的方面名称,不同的参数列表(个数和类别不同),同时
27、出现在一个类中。54.方法重写:在子类中产生与父类相同的方法头(参数列表也相同),但是方法体不同,属于方法重写,与方法重载有根本区别。子类也可以重载父类的方法,只是父子类的方法重载。55.多态定义:多种形态,多种形式,多种表现形态。最直接的表现形式是方法重写(父子类之间),方法重载(一个类里面)。抽象类,接口都为接口服务。abstract56.抽象方法(abstract):由abstract关键字修饰的方法叫做抽象方法,只有方法头没有方法体。56.抽象类(abstract):由abstract关键字修饰的类叫做抽象类。只能声明,不能创建。有抽象方法的类一定是抽象类,但抽象类不一定是抽象方法。当
28、想让一个方法只能被继承,但是不能创建时,用到此种情况。57.抽象类子类:1实现父类的所有的抽象方法,2.或者自己声明为抽象类,3.或者部份实现父类的方法,但自身还是要声明成抽象类。58.取随机数:Random random = new Random();int selectTndex = random.nextInt(3);System.out.println(selectTndex);59.接口(interface):接口是一系列方法(功能)的声明,即没有实现任何方法的抽象类(没有abstract关键字,但出现也不会报错);命名时,前面加上大写字母I,在其子类中,子类 implements
29、接口,implements在这里是实现的意思。子类要么实现接口的所有方法,要么把自己变成抽象类。60.接口特点:一个子类可以实现多个接口,即变相的多继承。接口可以继承接口,一个接口可以继承多个接口。接口只能声明不能创建。61.接口的分类:a.普通接口,即一系列方法的声明;b.常量接口,项目中常用的一些常量。C.标识接口(空方法接口),子类实现此接口,表示属于某个体系接口,具有某种功能。Java中级HTML知识点:Html怎么转换成jsp页面供程序员使用1.首行加上代码2.重命名为jsptable修饰代码鼠标来去特效与区别同样是标示一个储存格,唯一不同的是所标示的储存格中的文字是以粗体出现URL
30、重写jjj.jsp?参数名称=参数值&参数名称=参数值&参数名称=参数值方法重写可以通过链接页面跳转传递参数,其作用和表单中的隐藏域作用一样。跳转服务器跳转和客户端跳转:跳转之后地址没变,称为服务器跳转,地址改变称为客户端跳转。跳转方式:客户端跳转setHeader() response.setHeader(refresh,2;url=ddd.jsp);属于客户端跳转response.sendRedirect(DDD,JSP);客户端跳转,页面执行完毕之后再跳转,但是不能出传递request范围的属性。服务器跳转;服务器跳转,属于无条件跳转,后面的内容不执行,故而数据库的关闭不能放在后面。页面
31、间的两种跳转服务器跳转:超链接跳转ssssscookie使用方法:Cookie c1 = new Cookie (dd,ddd); response.addCookie(c1);Cookie c = request.getCookies();for (int i=0;i-注意:发现浏览器关闭后,不能取得cookie内容,原因为其内容仅保存在浏览器中,并没有保存在本地,保存本地,其保存时间必需得到设置。cl.setMaxAge(22);/插入此代码即可out.println()out.println()的换行去哪里了呢?这个换行只是针对于源文件中的换行,但是此换行会被HTML忽略掉,所以如果需要
32、换行,可以直接编写html语句。两种include指令 include指令和指令语法格式为: include: 指令有两种格式:语法一: 语法二: /想页面1中传递参数,再包含在本页面中 . 四种属性每种属性都有三种操作方法:1.设置属性setAttribute(String name,Object value) 取得属性getAttribute (String name) 删除属性(removeAttribute)2.属性范围 pageContext 范围仅本页面 范例:pageContext.setAttribute(name,mldn);/设置属性 String re = (String
33、)pageContext.getAttribute(name);/取得属性 requset 属性范围表示在一次服务器跳转中有效,只要是服务器跳转,则设置的request属性可以一直传递下去,超链接则不行。 范例:request.setAttribute(name,dd); String ddd = (Sring)request.getAttribute(name); session 属性范围仅为一个客户,两种跳转都可以 范例:seesion.setAttriute(name,dddd); String dddd = (String)seesion.getAttribute(ddd) appli
34、cation 范围是在服务器上面设置一个属性,所以一旦设置后任何用户都可以浏览到此属性。如果在服务器上设置过多的Application属性,则会影响到服务器的饿性能。 乱码转换:产生原因:所有静态web的执行流程,是先从服务器上取得一个页面,之后通过把内同提交给服务器,之后服务器在提交的内容返回给客户进行显示。设置page指令后,本页面输入的中文会得到正确的显示,但是接受到的从其他页面的参数却还是乱码,解决方法有两个:第一个直接把接受到的内容用服务器返回给客户的进行显示,即加上str=new String(str.getBytes(ISO8859-1);/转码 第二种方法为:前面加上 requ
35、est.getCharacterEnocoding(gbk);/按中文接受。两种方法的区别为:第一种是接受了再转换,第二种是转换了再接受。接收多个同名参数在表单中,存在复选框,接收方法如下:abc若String inst = request.getParameter(inst);接收内容只为选项最前面一个,解决方法如下:String inst = request.getParameteValues(inst);/接收表单参数% for(int i=0;i 、配置tomcat虚拟目录。1.文件目录结果必须为:WEB TOOT/WEB-INF/WEB.xml。WEB.xml文件有格式要求。可以拷贝
36、D:Tomcat 6.0webappsROOTWEB-INF里面的文件,但是注释内容去掉。2.修改serve.xml 正确位置加上:3.conf/web.xmllistings下面false改为true,项目完成记得改过来。登录代码系统登录 用户名:密 码: 错误的用户名或者密码! if(!(.equals(name)|name=null)&(.equals(password)|password=null)这条很重要!String转换package com.zcy;/* * author yangzhi * */public class Test04 public sta
37、tic void main(String args) String str1 = 10;String str2 = 10.2;String str3 = boolean;/与基本数据类型对应的有八个包装类int a = Integer.parseInt(str1);System.out.println(a);float b = Float.parseFloat(str2); System.out.println(b);boolean c = Boolean.parseBoolean(str3);System.out.println(c);输入输出package com.zcy;import j
38、ava.util.Scanner;/* * 测试输入输出 * author 杨志 * */public class Test03 public static void main(String args) Scanner input = new Scanner(System.in);int age;float money;String name;System.out.println(请输入您的姓名:);name = input.next();System.out.println(请输入您的年龄:);age = input.nextInt();System.out.println(请输入您的工资:
39、);money = input.nextFloat();System.out.println(name = +name);System.out.println(age = +age);System.out.println(money = +money);方法的说明符方法的访问说明符 1.public 任何地方都可以访问 2.protected 子类或者同包,同类可以访问,但是其它包的非子类不可以访问 3.default 只有同类或者同包可以访问 4.private 私有的方法,这里的私有指的是被被class所私有,其他类不能访问,继承的类也不行。方法的其他说明符 1.static 2.final 此方法不可以被子类覆盖。 3.abstract 抽象的方法 4.native 用户可以使用,但是不能编写的类。 5.synchronized 同步的方法面向对象 面向对象的程序开发实际上分为三种:OOA OOD OOP |-OOA:面向对象的分析 |-OOD:面向对象设计 |-OOP:面向对象程序三大特性:封装、继承、多态。 对象的创建及使用:Person zcy = null;/声明对象 zcy=new Person();/实例化对象 Person zcy = new Person(); 方法不需要创建,直接使用。封装性