JAVA项目的打包及生成.exe文件

JAVA项目的打包及生成.exe文件
JAVA项目的打包及生成.exe文件

JAVA项目的打包及生成.exe文件

我爱java 2009-09-16 14:56:28 阅读132 评论0 字号:大中小订阅

总体思路是先打成jar再把jar打成exe。主要看1.3和2.3里的内容就可以了。

1.将项目打成jar:

1.1要将项目打包成jar文件,方法很多,可以用Eclipse自带的打包工具Ant 打包,也可以用Eclipse的Export生成jar。经过尝试后,我不推荐用Ant打包,因为要自己编写xml脚本语言,还要增加一些外部的jar,所以我打了好几

次都没打成。

1.2在这里介绍两种方法生成jar,第一种是用Eclpise的Export功能。在要打包的项目上击右键,选择Export,在窗口中选择Java里的JAR file。Next后的窗口中已经自动选好了要打包的项目,用户可以点击加号查看项目里被打包的内容。在下面的JAR file里设置你打包生成jar文件的输出目录,下一步在出现的窗口中选择Use existing manifest from workspace,在下面的Main class 后面直接点Browse,它会自动列出你项目中有主函数main的类。选择主类后点Finish即可生成jar文件。在此说明一下,这种打包方法不能把项目中的外部的jar包打进来,因该是也要编写一些脚本语言,没往深研究。所以生成后的

jar有些是不能执行的。

1.3第二种方法是利用Eclipse的一个第三方插件fatjar生成jar文件,也是本人觉得最简单最方便的一种生成方式。先从网上下载些插件,解压后是一个plugins的文件夹,里面只有一个文件夹,我的是“net.sf.fjep.fatjar_0.0.24”将它copy到Eclipser plugins文件夹下,此插件就安装成功了,重启Eclipse 在项目上右击就会看到多出一个“Build Fat Jar”在前面有个绿色的“+”号,这时你就可以用此插件打包你的项目了。进去后第一个界面Jar-Name里增入要生成的jar文件名,我的是“CAMP_fat.jar”。在Main-Class后点Browse像Export 一样它也会列出你项目中的主类,选择后其它默认即可,Next后会列出你要打包的所有内容,这个插件的优势就是可以将你项目中的外部jar也打进来,有三个先项,其中Export ANT是生成build.xml脚本文件,方便用户以后修改脚本,其它两个按钮没用。在这里什么都不点,直接点Finish就可以生成jar文件。

2.将jar打成.exe文件:

2.1 虽然此时的jar文件已经可以执行了。生成.exe的文件我也是用两种方法实现的,用到的打包工具是j2ewiz和exe4j,它们的不同会在我下面的介绍中

体现出来。

2.2 首先是j2ewiz,这个软件是绿色的,不用安装,解压后可以直接运行,但这个软件生成的 .exe文件不是跨平台的。运行此程序首先就是输入要打包的jar文件,我们浏览JAR选择我们之前用fatjar生成的“CAMP_fat.jar”项目文件(详见1.3),下面那个选项是提示用户最低要求的JRE版本,一般选1.3。下一步,因为我们的寝室管理系统是图形界面,所以在这里选“Windows窗口程序”下一步它也是自动生成要执行的主类,你只要选择就可以。下面的选框可以选择你启动程序显示的图片。下一步后这个窗可按个人喜好选择。下一步,如果你的程序还有什么依赖的外部jar文件,可以从这里加上,但因为之前的fatjar以经将我们项目所用的那三个连数据库的外部类打进CAMP_fat.jar包里了,所以

这里不用再添加。如果你之前是用Export打的jar 包,那么这里就需要再把那个三个数据库的包加进来了(详见1.2)。下一步是添入要生成的.exe文件名,再选一个程序图标就可以了,下一步后生成.exe文件,点完成。双击生成的.exe 文件就能看到运行效果了,这种exe文件还没有脱离JDK环境,还不能跨平台使

用,只能用于小组成员测试使用。

2.3 下面进入最关键的,如何打包跨平台的.exe文件。用到的软件是exe4j,我用的是V4.0版的,此软件需要破解。安装后运行左窗窗口标有十步,其实打包过程也非常简单。第一步完全略过,直接点Next第二步我们选择“JAR in EXE mode”就是选择我们已经有制作好的jar文件。第3步上面是项目名称,可随便填写,下面一个写出你想要将打包后的exe文件输出的目录我的是“桌面

\project\”。第4步,由于我的演示程序是图形的,所以选第一个,如果你的程序是控制台的,则选择第二个,Executable name写你将要生成的.exe文件的名字,Icon File可以选择生成文件的图标。第5步,先别管上面的,先在下面单击绿色的“+”号,在弹出的窗口中点Archive,然后找到起初已经做好的CAMP_fat.jar(详见1.3)文件,"OK"后返回,在下面的Class Path里就出现jar文件路径后,再在上面Main Class栏内点击找到main所在的类。第6步,你系统的JRE版本,一般是填个1.3,下面填1.6在这里单击advanced options,选择search sequence。选这个就是因为我们要把JDK环境也打包进来,好让程序能跨平台使用。首先要从你系统的JDK下的JRE目录copy到你.exe文件的输出目录下“桌面\project\JRE”,然后回到exe4j中在弹出窗口删除列表中的所有项。我的是三项,一个注册表的,一个JAVA环境变量的,一个JDK环境变量的,都不要。然后单击绿“+”,选择directory并选择JRE的根目录,我的是“桌面\project\JRE”就是copy后的目录,选完后exe4j弹出窗口中的Directory里会显示“.\JRE”。点OK关闭该窗口,返回exe4j的主窗口,你就可以看到刚加的路径。再从主窗口左侧窗口中单击advanced options,并选择preferred VM,在弹出的窗口中选择client hostspot VM,单击next按钮继续。

7、8步是一些个性设置默认即可。第9步编译完后第10步你点那个“Click Here to Start the Application”按钮就可以看到程序运行效果了,然后再点”Seave as”保存一个exe4j生成的一个文件,随便存哪里都行,和我们的.exe程序无

关。全部制作过程就完工了。

另一篇文章:

第一步:创建项目

打开Eclipse,新建一个Java项目,名叫TestSWT,手动追加一些必要的目录后

结构如下:

/bin - 这个是class编译输出路径

/dll - 此目录存放SWT解压出来的那些dll文件(简单应用的话

swt-win32-****.dll这一个文件就够了)

/lib - 此目录用来存放swt等开发需要的jar文件

/src - 此目录为源代码目录

/jar - jar文件的输出路径

/META-INF - 存放可执行JAR需要的MF文件

这里我选用的swt包是Eclipse/plugins下面的swt包,一般其名称类似于org.eclipse.swt.win32.win32.x86_****.jar,

其中的****是版本号,各人的可能不太一样。

上面说明目录的时候提到的dll目录,里面存放的dll文件可以直接从org.eclipse.swt.win32.win32.x86_****.jar这个包里解压得到,简单应用就只把swt-win32-****.dll复制过去,或者都复制过去(一共能解压出来6个dll)

也行,其余5个都比较小。

第二步:编写代码

然后编写一个测试用的窗体:

package cn.indoing.test;

import org.eclipse.swt.widgets.Display;

import org.eclipse.swt.widgets.Shell;

public class MainForm

{

public static void main(String[] args)

{

Display display = new Display();

Shell shell = new Shell(display);

shell.setText("Test!!!");

shell.setVisible(true);

while (!shell.isDisposed())

{

if (!display.readAndDispatch())

{

display.sleep();

}

}

display.dispose();

}

}

在这里顺便说一下,其实本不用把swt-***-****.dll复制到系统盘符的windows\system32下,那个目录内容的多少影响系统速度(个人感觉,不一定

准确),所以我们采用另外一种方式。

在eclipse里,让上面的MainForm编辑窗获得焦点,然后点击右键,选择Run As -> Open Run dialog ... ,选择右面(X)=Arguments标签,在下面的VM arguments 里追加-Djava.library.path={$workspace}\TestSWT\dll,这里的{$workspace}是你的eclipse的workspace的目录,不要直接把这个复制过去才好,呵呵。然

后点击Run就可以了。

第三步:创建配置文件

在META-INF目录下新建一个名为MANIFEST.MF的文本文件,这个文件小心点儿,格式要求的很严格,一个空格都不能错,如果Class-Path项有很多jar包,请写在一行,相邻的两个jar包之间用一个半角空格来分割。本例内容为:

Manifest-Version:(空格)1.0

Main-Class:(空格)cn.indoing.test.MainForm

Class-Path:(空

格)./lib/org.eclipse.swt.win32.win32.x86_3.3.1.v3346i.jar

第四步:创建批处理文件

在项目的根目录下新建一个jar.bat文件,修改其内容为:

@echo off

cd jar

rmdir lib /s /q

del test.jar /f /q

cd ..\bin

jar cvfm ../jar/test.jar ../META-INF/MANIFEST.MF cn/

cd ..\jar

mkdir lib

copy ..\lib\*.* lib\

copy ..\dll\*.* lib\

可以了,编译好源码后,在资源管理器里找到本项目的目录,双击执行jar.bat

即可。

在/jar目录下会生成一个test.jar和一个lib目录,双击test.jar试试看?

其他说明

jar文件通常有两种启动方式,一种是双击运行,一种是DOS提示符下运行,先

予以分别说明。

?双击运行

这种运行方式是最直接最简单也是大家特别习惯的运行方式,最终成品发布估计多数都是这样运行,但是这种方式不利于开发期的测试和调试,因为双击模式默认是界面操作模式,所以一些本来打在控制台的错误信息我们就无法获得,万一程序真的在某个地方有问题,从直观上是根本看不到任何反映的。另一种情况,也是非常令人头疼的情况,就是明明在Eclipse 跑的好好的,作成Jar文件双击就不好用,然后解压回去或者回到Eclipse 发现还好用,这样的情况初学者比较容易常见,原因多数情况是配置的问题,那么为了迅速的找到问题的原因,就要采用下面的运行方式——DOS

提示符运行。

?DOS提示符下运行

在DOS提示符下进入Jar包所在目录,然后执行 java -jar {$yourfilename}.jar。正如上面所说,在DOS提示符下运行Jar文件,默认方式是控制台方式,那么任何我们以前可能在Eclipse的Console

里看到的log信息现在都能看得到,假如真的出现上面提到的第二种情况,那么一眼就可以看出是否缺少dll文件还是其他问题了。

aaa

常见错误

Exception in thread "main" https://www.360docs.net/doc/d617809008.html,ng.UnsatisfiedLinkError: no

swt-win32-3236 in java.library.path

这个错误最初容易出现在Eclipse开发过程,通常是dll文件的存放位置不对,或者可以说配置参数没有写好,解决办法请先参考上面提到的加运行参数方法,如果还是不行那么先把swt-win32-3236.dll放到windows\system32下吧(实在没办法再放进去,总往system32里添加东西不是好事儿)。如果还是不行——,这是我刚才想到的,那么要注意一下是不是版本不对,例如提示说

swt-win32-3236找不到,发现dll文件是有,但是后面却不是3326,这个现象

没试过,猜测有可能发生。

Invalid or corrupt jarfile test.jar

MANIFEST.MF文件格式不对,很有可能多了或少了空格,记住每个冒号后面有且

只有一个半角空格。

Exception in thread "main" https://www.360docs.net/doc/d617809008.html,ng.NoClassDefFoundError:

cn/indoing/test/MainForm2

Main-Class的内容写错了,例如本例中明明是MainForm,这里却写成了MainForm2(当然只是举例子,实际上这样的事情是不会发生的)。

其他的错误情况我还没想到,如果你参考我的流程来做发现有其他问题,请跟贴

告诉我,共同学习。

“画蛇添足”

按照上面的流程,我们做好了jar文件,可以通过双击执行了,但是有一点可能不是令人十分满意,那就是发布的时候还要把lib包一起带着。那么能不能作成

只有一个jar文件就够了呢?

经过测试,可行,不过不敢说自己的方法是最简洁的,现说明如下:

不知道上面解压org.eclipse.swt.win32.win32.x86_****.jar时的东西还在不,不在就再解压一次。里面有个org目录,6个dll和其他几个说明文件,我们要做的是用解压缩软件(例如7z,winRar,winZip等等)打开test.jar,注意,是打开即可,不用解压。还是参考本例中的test.jar,请只保留cn目录和META-INF目录,其他文件一概全部删除,然后用鼠标点选swt解压包里的org

目录和6个dll文件到当前test.jar里,软件会问你是否加入,确认。然后进入test.jar里的META-INF文件夹,先把MANIFEST.MF拖拽出来,用文本编辑器打开,删掉classpath那行,保存后再拖拽回去,OK,一个崭新的单文件可执行

jar文件就做好了。

这一套也不太麻烦,不过如果以后想省事儿的话建议把这个但文件的test.jar 留着(我这里显示1.74M),以后做别的SWT项目想作成单个儿的可执行JAR文件时只要把这里的cn目录删掉,换成你自己的开发目录,再把MANIFEST.MF弄

出来修改一下main-Class就可以了。

EXE4J注册码:L-g782dn2d-1f1yqxx1rv1sqd没有注册码的话生成的exe文件执行

时会有EXE4J的提示,很不爽

java对象转换String类型的三种方法

北大青鸟中关村 java对象转换String类型的三种方法在很多情况下我们都需要将一个对象转换为String类型。一般来说有三种方法可以实现:Object.toString()、(String)Object、String.valueOf(Object)。下面对这三种方法一一分析 一、采用Object.toString() toString方法是https://www.360docs.net/doc/d617809008.html,ng.Object对象的一个public方法。在java中任何对象都会继承Object 对象,所以一般来说任何对象都可以调用toString这个方法。这是采用该种方法时,常派生类会覆盖Object里的toString()方法。 但是在使用该方法时要注意,必须保证Object不是null值,否则将抛出NullPointerException 异常。 二、采用(String)Object 该方法是一个标准的类型转换的方法,可以将Object转换为String。但是在使用该方法是要注意的是需要转换的类型必须是能够转换为String的,否则会出现CalssCastException异常错误。 代码代码如下: Object o = new Integer(100); String string = (String)o; 这段程序代码会出现https://www.360docs.net/doc/d617809008.html,ng.ClassCastException: https://www.360docs.net/doc/d617809008.html,ng.Integer cannot be cast to https://www.360docs.net/doc/d617809008.html,ng.String。因为将Integer类型强制转换为String类型,无法通过。 三、String.valueOf(Object) 上面我们使用Object.toString()方法时需要担心null问题。但是使用该方法无需担心null值问题。因为在使用String.valueOf(Object)时,它会判断Object是否为空值,如果是,则返回null。下面为String.valueOf(Object)的源码: 代码代码如下: public static String valueOf(Object obj) { return (obj == null) ? "null" : obj.toString(); } 从上面我们可以看出两点:一是不需要担心null问题。二是它是以toString()方法为基础的。但是一定要注意:当object为null时,String.valueOf(object)的值是字符串对象:"null",而不是null!!!

常用包 Java 功能介绍

Java的常用包简介 JVM的常用包一般在C:\Program Files\Java\jre1.5.0_04\lib\rt.jar 一般都会放在C:\Program Files\Java\jre1.5.0_04\lib下 jdk的一般在C:\Program Files\Java\jdk1.5.0_04\jre\lib 源代码在C:\Program Files\Java\jdk1.5.0_04\src.zip java调用的包像String啊这些自带的包的源代码都可以在这里找到。 一般碰到不会用的类都是直接去看API文档的。 1、https://www.360docs.net/doc/d617809008.html,ng包:java的核心类库,包含了运行java程序必不可少的系统类,如基本数据类型、基本数学函数、字符串处理、线程、异常处理类等,系统缺省加载这个包。 2、java.io包:java语言的标准输入/输出类库,如基本输入/输出流、文件输入/输出、过滤输入/输出流等等。 3、java.util包:Java的实用工具类库Java.util包。在这个包中,Java提供了一些实用的方法和数据结构。例如,Java提供日期(Data)类、日历(Calendar)类来产生和获取日期及时间,提供随机数(Random)类产生各种类型的随机数,还提供了堆栈(Stack)、向量(Vector) 、位集合(Bitset)以及哈希表(Hashtable)等类来表示相应的数据结构。包含如处理时间的date类,处理变成数组的Vector类,以及stack和HashTable 类。 4、java.util.zip包:实现文件压缩功能。 5、https://www.360docs.net/doc/d617809008.html,ng.reflect包:提供用于反射对象的工具。 6、java.awt.image包:处理和操纵来自于网上的图片的java工具类库。 7、java.wat.peer包:很少在程序中直接用到,使得同一个java程序在不同的软硬件平台上运行。 8、java.applet包:用于执行小程序的类,如Applet类。 9、https://www.360docs.net/doc/d617809008.html,包:实现网络功能的类库有Socket类、ServerSocket类。 10、java.corba包和java.corba.orb包。

Java程序员必须了解的20个lib库

Java程序员必须了解的20个lib库 一般一个经验丰富的开发者,一般都喜欢使用开源的第三方api库来进行开发,毕竟这样能够提高开发效率,并且能够简单快速的集成到项目中去,而不用花更多的时间去在重复造一些无用的轮子,多了解一些第三方库可以提高我们的开发效率,下面就来看一下在开发过程中经常会用到的一些开发第三方库,也可能不是太全,就列举一些常见或者常用的吧。 1,日志库 日志库是最常用的,毕竟在开发项目的过程中都需要使用日志来记录项目的运行信息,从而很快的定位项目的发生的问题。尽管JDK附带了自己的日志库,但是还有更好的选择,例如Log4j、SLF4j和LogBack。一般建议使用SLF4j。比如Alibaba开发手册上也是这样说的,毕竟SLF4J使您的代码独立于任何特定的日志API,就是在项目的其它框架中使用了其它的日志框架库也能够很好的集成。 2,JSON转换库 在当今的web服务、手机api接口开发和物联网世界中,JSON已经成为将信息从客户端传送到服务器的首选协议。它们前端要学好必须每天坚持学习。为了方便大家的交流学习,也是创建了一个群每天都有分享学习方法和专业老师直播

前端课程,这个扣裙首先是132 中间是667 最后是127 前端学习零基础想要学习的同学欢迎加入,如果只是凑热闹就不要来了!!!已经取代了XML,成为以独立于平台的方式传输信息的首选方式。不幸的是,JDK没有JSON库。但是,有许多优秀的第三方库允许您解析和创建JSON消息,比如Jackson和Gson,FastJson。 3,单元测试库库 单元测试是区分普通开发人员和优秀开发人员的最重要的东西。程序员经常被给予不写单元测试的借口,但是最常见的避免单元测试的借口是缺乏流行的单元测试库的经验和知识,包括JUnit、Mockito和PowerMock。 4,通用类库 Java开发人员可以使用一些优秀的通用第三方库,比如Apache Commons和谷歌Guava。我总是在我的项目中包含这些库,因为它们简化了许多任务。正如约书亚?布洛赫(Joshua Bloch)在《Effective Java》一书中正确指出的那样,重新发明轮子是没有意义的。我们应该使用经过测试的库,而不是时不时地编写我们自己的程序。对于开发人员来说,熟悉Apache Commons和谷歌Guava 是很有用的。 5,HTTP库

Java中常见异常类型及分析

Java常见异常类型及原因分析 这里介绍几种常见的异常并对原因进行分析,包括: ●NullPointException异常; ● ClassCastException异常; ● ArrayIndexOutOfBoundsException异常; ●UnsupportedClassVersionError错误; ●NumberFormatExceptio异常 ●堆栈溢出和内存溢出。 1 NullPointException异常 顾名思义,NullPointerException是空指针异常。但是在Java中没有指针,怎么会有空指针异常呢? 在C++中,声明的指针需要指向一个实例(通过new方法构造),这个指针可以理解为地址。 在Java中,虽然没有指针,但是有引用(通常称为对象引用,一般直接说对象),引用也是要指向一个实例对象(通过new方法构造)的,从这种意义上说,Java中的引用与C++中的指针没有本质的区别,不同的是,处于安全的目的,在Java中不能对引用进行操作,而在C++中可以直接进行指针的运算,例如book++等。 所以这里的NullPointerException虽然不是真正的空指针异常,但本质上差不多,是因为引用没有指向具体的实例,所以当访问这个引用的方法的时候就会产生这种异常。例如下面的代码: String str = "这是一个测试用的字符串!"; System.out.println(str.length()); 这段代码没有问题,但是如果改成下面的代码: String str ; System.out.println(str.length()); 就会产生NullPointerException异常了,当然一般人不会犯这样低级的错误。 那这种异常通常是如何产生的呢?比较多见的是下面的两种情况: 1)把调用某个方法的返回值直接赋值给某个引用,然后调用这个引用的方法。在这种情况下,如果返回的值是null,必然会产生NullPointerException异常。例如: String userName=request.getParameter("userName"); if(userName.length()==0) ...... else ...... 如果request.getParameter("userName")的结果为null,则这里就会产生这种异常。 2)在方法体中调用参数的方法。这种情况下,如果调用方法的时候传递进来的值是null,也要产生NullPointerException异常。 要解决这种异常,只需要检查异常出现在第几行(通常在集成开发环境中会提示用户错误发生在第几行),然后查看调用了哪个对象的方法,然后检查这个对象为什么没有赋值成

java开发常用的jar包的作用解释

java开发常用的jar包的作用解释 转载自: https://www.360docs.net/doc/d617809008.html,/chaod5659/article/details/8250845 java开发中主要用到的jar包描述commons-io.jar: 可以看成是java.io的扩展,用来帮助进行IO功能开发.它包含三个主要的领域:Utilityclasses-提供一些静态方法来完成公共任务.Filters-提供文件过滤器的各种实现.Streams-提供实用的Stream,reader与writer实现. commons-beanutils.jar: 提供对Java反射和自省API的包装,主要提供了对于JavaBean进行各种操作。 commons-digester.jar: 它能方便地将XML文档所定义的元素转化为JAVA对象,其实它的用法有点象栈(当然内在的原理就是那个古老的东

西,只是提供了更高一层的封装)。 commons-lang.jar: 它扩展了标准https://www.360docs.net/doc/d617809008.html,ngAPI,增加了字符串操作方法、基本数值方法、对象反射、创建和串行化以及System属性。它还包含一个可继承的enum类型、对多种嵌套的Exception 类型的支持、对java.util.Date的增强以及用于构建方法的实用程序,例如自动生成toString()的结果、自动实现hashCode()和equals()方法、数组操作、枚举、日期和时间的处理等等。 ArrayUtils–用于对数组的操作,如添加、查找、删除、子数组、倒序、元素类型转换等; BitField–用于操作位元,提供了一些方便而安全的方法; BooleanUtils–用于操作和转换boolean或者Boolean及相应的数组;

简析JAVA中int、String间类型转换

初学Java,对于类型转换以及强制类型转换还是没什么难度的,但是初学者往往在涉及到String类型的转换时,就会抛出问题了。这里收集整理了下,仅供参考。 int 转String int i=12345; String s=”"; 第一种方法:s=i+”"; 第二种方法:s=String.valueOf(i); 这两种方法有什么区别呢?作用是不是一样的呢?是不是在任何下都能互换呢? String转int s=”12345″; int i; 第一种方法:i=Integer.parseInt(s); 第二种方法:i=Integer.valueOf(s).intValue(); 这两种方法有什么区别呢?作用是不是一样的呢?是不是在任何下都能互换呢? 以下是答案:

3.) String s = “” + i; 注: Double, Float, Long 转成字串的方法大同小异. JAVA数据类型转换这是一个例子,说的是JAVA中数据数型的转换.供大家学习package shenmixiaozhu; import java.sql.Date; public class TypeChange { public TypeChange() { } //change the string type to the int type public static int stringToInt(String intstr) { Integer integer; integer = Integer.valueOf(intstr); return integer.intValue(); } //change int type to the string type public static String intToString(int value) { Integer integer = new Integer(value); return integer.toString(); } //change the string type to the float type public static float stringToFloat(String floatstr) { Float floatee; floatee = Float.valueOf(floatstr); return floatee.floatValue(); } //change the float type to the string type public static String floatToString(float value) { Float floatee = new Float(value); return floatee.toString(); } //change the string type to the sqlDate type public static java.sql.Date stringToDate(String dateStr) { return java.sql.Date.valueOf(dateStr); } //change the sqlDate type to the string type

Eclipse中将Java项目 打包为jar,并且引入第三方jar包 解决办法

如果自己的java project中需要引用额外的jar包作为资源文件,那么需要自定义配置文件MANIFEST.MF ,例如: Manifest-Version: 1.0 Class-Path: lib\crimson.jar lib\jbcl.jar lib\junit.jar lib\log4j-1.2.13.j ar lib\mysql-connector-java-3.1.13-bin.jar Main-Class: src.YourMainClassName 其中的Class-Path就指定了外来jar包的位置。请注意假设我们的项目打包后为pr oject.jar,那么按照上面的定义,应该在 project.jar的同层目录下建立一个lib 文件夹,并将相关的jar包放在里面。否则将会出现Exception in thread "main" https://www.360docs.net/doc/d617809008.html,ng.NoClassDefFoundError的错误。 注意:如果在Class-Path 中引入比较多的jar包,不要写成一行,不然会报:java. io.IOException : line too long ,需要分多行写,第二行以及下面的第三行、第四行写的时候需要在前面空两格(敲两下空格键)即可 最后介绍一下使用Eclipse制作jar包的过程吧: 1. 首先在Eclipse中打开项目,右键点击项目,选择“Export”; 2. 选择Java/JAR file,Next; 3. Select the resources to export中可以选择你想要包含的项目文件夹,一些不必要的文件夹就无需放进去了,免得增大空间; 这里有几个选项: * Export generated class files and resources 表示只导出生成的.clas s文件和其他资源文件 * Export all output folders for checked projects 表示导出选中项目 的所有文件夹 * Export java source file and resouces 表示导出的jar包中将包含你 的源代码*.java,如果你不想泄漏源代码,那么就不要选这项了 * Export refactorings for checked projects 把一些重构的信息文件也 包含进去 在Select the export destination中选择导出的jar的路径,Next 4. 下一页可以选择是否导出那些含有警告warning或者错误errors的*.class文件。一般不用理他,Next 5. 下一个页面里可以对项目做一些配置。 * Generate the manifest file是系统帮我们自动生成MANIFEST.MF文件,

java开发常用jar包

java开发常用jar包 mail.jar与activation.jar 里面包含了activation.jar和mail.jar两个包.通过里面的类的调用便可以达到发送电子邮件的目的 commons-beanutils.jar Apache Commons包中的一个,包含了一些Bean工具类类。必须使用的jar包。 commons-collections.jar Apache Commons包中的一个,包含了一些Apache开发的集合类,功能比java.util.*强大 commons-lang.jar Apache Commons包中的一个,包含了一些数据类型工具类,是https://www.360docs.net/doc/d617809008.html,ng.*的扩展。必须使用的jar包。 commons-logging.jar: Apache Commons包中的一个,包含日志功能 commons-io.jar Apache Commons包中的一个,java.io.*的扩展,输入输出,支持文件上传 commons-fileupload.jar Apache Commons包中的一个,是一个通过Http接收上传的文件并处理结果文件的库 dom4j-1.4.jar 和jaxen-1.1.1.jar 是一个Java的XML API,类似于jdom,用来读写XML文件的。Hibernate使用dom4j解析XML配置文件和XML映射元文件。必需的。 ehcache-1.2.jar

Hibernate可以使用不同cache缓存工具作为二级缓存。EHCache是缺省的cache缓存工具。如果没有其它的可选缓存工具,则为必需的。 hibernate3.jar hibernate3的核心类库。 itext.jar 是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。 iTextAsian.jar itext中关于亚洲编码的类库,在这里用于中文字体的输入。 junit.jar Junit包,当你运行Hibernate自带的测试代码的时候需要,否则就不用。 commons-digester.jar Apache Commons包中的一个,通过它可以很方便的解析xml文件生成java对象aspectjrt.jar 和aspectjweaver.jar Annotation 方式实现AOP commons-dbcp.jar commons-pool-1.2.jar DBCP数据库连接池 cglib-nodep-2.1_3.jar CGLIB是一个强大的高质量高性能的代码生成库,在运行时可以用它来扩展Java类 jfreechart-1.0.12.jar

java常用jar包

java常用jar包(未整理) 2011-05-11 14:58:50 分类:Java Hibernate一共包括了23个jar包,令人眼花缭乱。本文将详细讲解Hibernate每个jar包的作用,便于你在应用中根据自己的需要进行取舍。 下载Hibernate,例如2.0.3稳定版本,解压缩,可以看到一个hibernate2.jar和lib目录下有22个jar包: hibernate2.jar: Hibernate的库,没有什么可说的,必须使用的jar包 cglib-asm.jar: CGLIB库,Hibernate用它来实现PO字节码的动态生成,非常核心的库,必须使用的jar包 dom4j.jar: dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的。dom4j是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也 是一个开放源代码的软件,可以在SourceForge上找到它。在IBM developerWorks上面可以找到一篇文章,对主流的Java XML API进行的性能、功能和易用性的评测,dom4j无论在 那个方面都是非常出色的。我早在将近两年之前就开始使用dom4j,直到现在。如今你可以看到越来越多的Java软件都在使用dom4j来读写XML,特别值得一提的是连Sun的JAXM也在 用dom4j。这是必须使用的jar包,Hibernate用它来读写配置文件。 odmg.jar: ODMG是一个ORM的规范,Hibernate实现了ODMG规范,这是一个核心的库,必须使用的jar包。 commons-collections.jar:Apache Commons包中的一个,包含了一些Apache开发的集合类,功能比java.util.*强大。必须使用的jar包。 commons-beanutils.jar:Apache Commons包中的一个,包含了一些Bean工具类类。必须使用的jar包。 commons-lang.jar: Apache Commons包中的一个,包含了一些数据类型工具类,是https://www.360docs.net/doc/d617809008.html,ng.*的扩展。必须使用的jar包。 commons-logging.jar: Apache Commons包中的一个,包含了日志功能,必须使用的jar包。这个包本身包含

Java(1-4)复习题

《使用Java理解程序逻辑》1-4章阶段测试 一课后选择题 二、选择题 1、下列语句中,( BD )正确完成整形变量的声明和赋值。 A). int count,count=0; B). int count=0; C). count=0; D). int count1=0,count2=1; 2、在JAVA中,用于向控制台打印输出信息的语句是(A)。 A). System.out.println() B). System.println() C). Out.println() D). Print.println() 3、给定某Java程序的main方法如下所示,该程序的运行结果是( A)。Public static void main(String[] args){ int i=0; System.out.println(i ); } (选择一项)A A). 输出0 B). 输出1 C). 编译错误 D). 运行时出现异常 4、在Java 中,下列代码的远行结果是(D )。 public static void main(String[] args) { int a=1,b=2,c=3; if(a<0) if(b<0) c=10;

c=20; System.out.println(c); } A). 输出:10 B). 输出:20 C). 输出:3 D). 编译报错 5、在Java中,源文件Test.java中包括如下代码段,则程序编译运行结果是(b)。 public class Test{ public static void main(String[]args){ system.out.print(“Hello!”); } } A). a) 输出:Hello! B). b) 编译出错,提示“无法解析system” C). c) 运行正常,但没有输出任何内容 D). d) 运行时出现异常 6、在Java中,Scanner类提供从控制台获取键盘输入的功能,下列语句( b)能够正确实例化Scanner类的对象,用于获得键盘输入的数据。 A). Scanner input = new Scanner(System.out) B). Scanner input = new Scanner(System.in) C). Scanner input = new Scanner(System) D). Scanner input = new Scanner() 7、下面程序的执行结果是( c) public class Weather { public static void main(String[] args) { int shiDu=45; if(shiDu>=80){ System.out.println("要下雨了"); }else if(shiDu>=50){ System.out.println("天很阴"); }else if(shiDu>=30){ System.out.println("很舒适"); }else if(shiDu>=0){ System.out.println("很干燥");

Java程序打成Jar包做成EXE安装程序(2)

J a v a程序完成以后,对于W i n d o w s操作系统,习惯总是想双击某个e x e文件就可以直接运行程序,现我将一步一步的实现该过程.最 终结果是:不用安装J R E环境,不用安装数据库,直接双击一个e x e 文件,就可以运行程序. 下面我将以我最近写的一个程序作例子,进行该打包过程. 该程序是使用了:H i b e r n a t e,S p r i n g,D e r b y的J a v a G U I.(J D K 需要1.6版本,因该版本才有D e r b y),我使用的是E c l i p s e进行开发. 第一步:完成J a v a G U I程序 在E c l i p s e下,程序能够正常运行. 第二步:准备清单文件(M A N I F E S T.M F) 方法1:直接拷贝其它能运行的J A R文件中的M A N I F E S T.M F 进行修改 方法2:利用I D E工具,如E c l i p s e在生成J A R文件时自动生成 M A N I F E S T.M F内容如下: M a n i f e s t-V e r s i o n: 1.0 M a i n-C l a s s:m a n a g e r.u i.M a i n F r a m e C l a s s-P a t h: ./l i b/s p r i n g.j a r ./l i b/h i b e r n a t e.j a r ./l i b/d e r b y.j a r S p l a s h S c r e e n-I m a g e r: m a n a g e r/r e s o u r c e s/i m a g e s/s p l a s h.j p g 说明: M a n i f e s t-V e r s i o n-指定清单文件的版本号 M a i n-C l a s s-指定程序运行的入口类。注意:类名后不要加c l a s s扩展名 C l a s s-P a t h-指定支持库的路径。“.”指程序运行目录,即导出的J A R包所在目录。程序运行时依据C l a s s-P a t h项的设置路径来查找支持库。每一个支持库之间用空格隔开。在这里使用了 h i b e r n a t e,s p r i n g,d e r b y. 注意:

Java语言基本数据类型、转换及其封装

Java语言基本数据类型、转换及其封装Java语言基本数据类型、转换及其封装 1. 逻辑类型 ·常量 true,false。 ·变量的定义 使用关键字boolean来定义逻辑变量: boolean x; boolean tom_12; 也可以一次定义几个: boolean x,tom,jiafei,漂亮 x,tom,jiafei,漂亮都是变量的名字。定义时也可以赋给初值: boolean x=true,tom=false,漂亮=true,jiafei 2.整数类型 ·常量123,6000(十进制),077(八进制),0x3ABC(十六进制)。 ·整型变量的定义分为4种: 1.int 型 使用关键字int来定义int型整形变量 int x int tom_12 也可以定义几个: int x,tom,jiafei,漂亮 x,tom,jiafei,漂亮都是名字。定义时也可以赋给初值: int x=12,tom=-1230,漂亮=9898,jiafei 对于int型变量,分配给4个字节byte,一个字节由8位(bit)组成,4个字节占32位(bit)。bit 有两状态,分别用来表示0,1。这样计算机就可以使用2进制数来存储信息了。内存是一种特殊的电子元件,如果把内存条放大到摩天大

楼那么大,那么它的基本单位——字节,就好比是大楼的房间,每个房间的结构都是完全相同的,一个字节由8个能显示两种状态的bit组成,就好比每个房间里有8个灯泡,每个灯泡有两种状态——亮灯灭灯。 对于 int x=7; 内存存储状态如下: 00000000 00000000 00000000 00000111 最高位:左边的第一位,是符号位,用来区分正数或负数,正数使用原码表示,最高位是0,负数用补码表示,最高位是1。例如: int x=-8; 内存的存储状态如下: 11111111 11111111 11111111 11111000 要得到-8的补码,首先得到7的原码,然后将7的原码中的0变成1,1变成0,就是-8的补码。 因此,int型变量的取值范围是-2^31~2^31-1。 2. byte型 使用关键字byte来定义byte型整型变量 byte x ; byte tom_12; 也可以一次定义几个: byte x,tom,jiafei,漂亮 x,tom,jiafei,漂亮都是名字。定义时也可以赋给初值: byte x=-12,tom=28,漂亮=98,jiafei 注:对于byte型变量,内存分配给1个字节,占8位,因此byte型变量的取值范围是: -2^7~2^7-1。

Eclipse中将项目导出jar包,以及转化成exe的方法

Eclipse中将项目导出jar包,以及转化成exe文件 2011-06-27 09:24 一、导出jar文件: 如果你的程序开发已经接近尾声了,正准备将其生成桌面可执行文件却不知道该如何操作时,你只要按照 以下步骤实行即可:选中你的项目---然后右击弹出选项列表---选择Export---Java---jar file---next---browser(选择jar的存放路径)---next---next(不管太多继续下一步)---browser(选择你 程序的主类--OK)---finish;查看你存放jar的目录,是否已经生成了?如果没有你一定没按照步骤操作. 二、运行jar文件: 生成的jar文件你可以双击运行它,但默认情况下会以压缩包的方式打开,如果这不是你想要的结果,请右 击文件---打开方式---选择java(TM)platform来运行.我想这时你应该看到了你的软件界面.先恭喜你了.. 三、连同第三方文件一并导出至jar文件: 如果你在程序开发的时候用到了第三方提供的API或者其它附属资源,在你导出生成jar文件时你必须将 第三方的文件一并导出,不然你的程序运行将达不到你想要的结果. 你可以利用Fat jar插件生成jar,Fat jar 的下载地址:https://www.360docs.net/doc/d617809008.html,/projects/fjep/下载的文件是net.sf.fjep.fatjar_0.0.31.zip,解压缩后你会看到plugins文件夹中的 net.sf.fjep.fatjar_0.0.31.jar文件(简称Fat jar). 插件安装:把Fat jar文件拷贝到你的eclipse目录下的plugins中..重新启动你的eclipse平台,然后 查看Window---preferences,弹出的窗口中有Fat jar preferences这一项则说明你已经安装成功了,没有这一项则未安装成功,需要多做如下几步操作:到你的eclipse目录下的 configuration---org.eclipse.update,并删除platform.xml文件,然后重新启动eclipse.查看 Window---preferences,你会发现Fat jar preferences这一项.恭喜你安装成功了.(未成功可直接去墙撞死).. 用Fat jar打包:右击你的项目,选项列表中有Build Fat jar这一项,选择它,弹出的窗口你会觉得特别 亲切,一目了然使用很方便,点击Browser(Main-Class选择你的主类)---next---finish(勾选你需要一起 打包的资源,默认为全部勾选).瞧,jar文件就生成在你的工程项目中了.运行它,一切顺利,否则就是你编程的问题了.. 另:如果你不想用Fat jar来打包,有一个更快捷的方法可以帮助你,但也是有缺陷的. 步骤:将你需要用到的附属文件放到你的jre安装目录下的\lib\ext目录中(安装JDK的同时也安装了jre),再通过(一、导出jar文件)的方式生成jar.这样就可以了.它有个致命的缺点就是,这样的jar文件只能在你本机可以使用,如果要在别的机子上运行必需在\lib\ext放置同样的附属资源. 四、将jar文件转换成exe可执行文件:

Java语言基础

孙燮华编著《Java软件编程实例教程》清华大学出版社 第2章Java语言基础 本章主要学习Java语言的基本语法,包括标识符,数据类型、表达式、语句和数组等。 2.1标识符与关键词 2.1.1 标识符 1.标识符的定义规则 在Java中,对变量、类、接口和方法等进行命名所使用的字符串称为标识符。一个合法的标识符要满足以下的规则: ◆以英文大小写字母、下划线“_”、或“$”开始的一个字符序列。 ◆数字不能作为标识符的第1个字符。 ◆标识符不能是Java的关键词。 ◆标识符大小写敏感且长度没有限制。 例如,下面的字符串都是合法的标识符: USERNAME, _sys_VAR, $change, thisOne, 学生, a教授但下面的标识符是非法的: 3student, %name, -num, !_not, *ptr, @email

2.标识符风格约定 为了使命名更为规范,Java对标识符还有如下一些约定。 ◆对于变量名和方法名,不能用下划线“_”、和“$”作为标识符的第1个字符。因为这两个字符对于Java内部类具有特殊意义。 ◆类名、接口名、变量名和方法名采用大小写混合形式,每个英文单词的首字母用大写,其余用小写, 无空格连接。例如,HelloWorldFromJava。但变量名和方法名的首字母用小写,如firstVariableName。类名和接口名的首字母用大写,如类名HelloWorld。 ◆常量名完全用大写,且用下划线“_”作为标识符中每个单词的分隔符,例如,MAX_SIZE。 ◆方法名应使用动词,类名和接口名使用名词。 ◆变量名应有一定的意义,尽量不使用单个字符作为变量名。但临时性的变量,如循环控制变量可以用i, j, k等。 2.1.2 关键词 关键词是Java的保留字。Java编译器在词法扫描时需要区分关键词和一般的标识符。因此,用户自定义的标识符不能与这些关键词重名,否则会出现编译错误。另外,true, false和null虽然不是关键词,但也被保留,同样不能用来定义标识符。表2-1列出了Java的关键词。

命令行下编译java并生成jar包(1)

命令行下编译java并生成jar包 jar文件听说过吗,没有?或者陌生!好,没关系,这就是我们的第一站:打包发布。 为什么会有这个玩意呢,首先,这是jar的全称:JavaTM Archive (JAR) file,是的,就是java 存档文件。这有点类似zip文件,想一想它是干什么的用的呢,压缩!?没错就是要压缩,将我们原先零散的东西放到一下,重新组织,所有这些目的只有一个:方便!好了,不用管他是怎么压缩的,我们的重点是哪些是我们要压缩的(输入),还有压缩成了什么(输出),进而将它发布(部署)。 那我们的输入(要压缩的东西)主要是class文件,还有辅助的资源(这其中可能有图片,jsp文件,html文件等等)。Jar技术在jdk1.1版本中就已存在,在1.2中又有了增强。接下来说说jar的好处吧,这是官方的描述:安全,快速下载,压缩,猎取包,版本化包,可携。 说了这么多,我们现在开始实施。 先打开命令提示符(win2000或在运行筐里执行cmd命令,win98为DOS提示符),输入jar –help,然后回车(如果你盘上已经有了jdk1.1或以上版本),看到什么: 用法:jar {ctxu}[vfm0Mi] [jar-文件] [manifest-文件] [-C 目录] 文件名… 选项: -c 创建新的存档 -t 列出存档内容的列表 -x 展开存档中的命名的(或所有的〕文件 -u 更新已存在的存档 -v 生成详细输出到标准输出上 -f 指定存档文件名 -m 包含来自标明文件的标明信息 -0 只存储方式;未用ZIP压缩格式 -M 不产生所有项的清单(manifest〕文件 -i 为指定的jar文件产生索引信息 -C 改变到指定的目录,并且包含下列文件: 如果一个文件名是一个目录,它将被递归处理。 清单(manifest〕文件名和存档文件名都需要被指定,按‘m‘ 和?f‘标志指定的相同顺序。 示例1:将两个class文件存档到一个名为?classes.jar‘ 的存档文件中: jar cvf classes.jar Foo.class Bar.class 示例2:用一个存在的清单(manifest)文件?mymanifest‘ 将foo/ 目录下的所有 文件存档到一个名为?classes.jar‘ 的存档文件中: jar cvfm classes.jar mymanifest -C foo/ . 来个小例子试试看: 我们只有一个HelloWorld,如下: public class HelloWorld{ public static void main(String[] args){ System.out.println(―Hi, Hello World!‖); } }

jar包是什么

什么是jar包 JAR(Java ARchive,Java 归档)是一种与平台无关的文件格式,可将多个文件合成一个文件。用户可将多个Java applet 及其所需组件(.class 文件、图像和声音)绑定到JAR 文件中,而后作为单个的简单HTTP(Hypertext Tranfer Protocal,超文本传输协议)事务下载到浏览器中,从而大大提高下载速度。JAR 格式也支持压缩,从而减小了文件的大小,进一步缩短下载时间。另外,applet 编写者也可在JAR 文件中用数字签名的方式签写各项以确认其来源。它用Java 编写,可与现有的applet 代码完全向后兼容且可充分扩展。JAR 文件就是Java Archive File,顾名思意,它的应用是与Java 息息相关的,是Java 的一种文档格式。JAR 文件非常类似ZIP 文件——准确的说,它就是ZIP 文件,所以叫它文件包。JAR 文件与ZIP 文件唯一的区别就是在JAR 文件的内容中,包含了一个META-INF/MANIFEST.MF 文件,这个文件是在生成JAR 文件的时候自动创建的。 JAR文件是跨平台的,所以不必关心涉及具体平台的问题。除了可以包括声音和图像文件以外,也可以在其中包括类文件。 涉及因特网应用时,JAR文件显得特别有用。在JAR文件之前,Web浏览器必须重复多次请求web服务器,以便下载完构成一个“程序片”(Applet)的所有文件。除此以外,每个文件都是未经压缩的。但在将所有这些文件合并到一个JAR文件里以后,只需向远程服务器发出一次请求即可。同时,由于采用了压缩技术,所以可在更短的时间里获得全部数据。另外,JAR文件里的每个入口(条目)都可以加上数字化签名(详情参考Java用户文档)。

Java知识总结完整版

第1章 Java概述 Java语言的特特点 一种面向对象的语言;一种平台无关的语言;一种健壮的语言,吸收了C/C++的优点,但去掉了其影响程序健壮性的部分(如:指针、内存的申请与释放等) Java的两种核心机制 Java虚拟机(Java Virtual Machine) 垃圾回收机制(Garbage Collection) 源程序(*.java文件)→Java编译器→字节码(*.class文件)→类装载器→字节码校验器→解释器→操作系统平台 一次编译,随处运行 Java是一种解释型语言 JDK(Java Development Kit)软件开发工具包 JRE(Java Runtime Environment)运行时环境 开发需要JDK;用户只需JRE PATH:WINDOWS系统执行命令时要搜寻的路径(如javac.exe,java.exe)CLASSPATH:Java在编译和运行时要找的class所在路径(“.”代表当前路径) java:运行java程序 javac:编译java程序

java –version 一个源文件最多只能有一个public类,其他类数量不限,源文件名必须与public 类名一致 Java应用程序的执行入口时main()方法:public static void main(String[] args){…} Java语言中严格区分大小写 编译后,每一个类都对应一个class文件 第2章基础语法 标示符由字母、下划线”_”、美元符”$”或数字组成 标示符应以字母、下划线、美元符开头 Java标示符对大小写敏感,长度无限制,注意“见名知意”且不能与Java语言关键字重名 goto和const虽然未使用,但也被作为Java的关键字保留

相关文档
最新文档