HttpClient及jar包详解

HttpClient及jar包详解
HttpClient及jar包详解

简介

HttpClient 是Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持HTTP 协议的客户端编程工具包,并且它支持HTTP 协议最新的版本和建议。本文首先介绍HTTPClient,然后根据作者实际工作经验给出了一些常见问题的解决方法。HTTP 协议可能是现在Internet 上使用得最多、最重要的协议了,越来越多的Java 应用程序需要直接通过HTTP 协议来访问网络资源。虽然在JDK 的包中已经提供了访问HTTP 协议的基本功能,但是对于大部分应用程序来说,JDK 库本身提供的功能还不够丰富和灵活。HttpClient 是Apache Jakarta Common 下的子项目,用来提供高效的、最新的、功能丰富的支持HTTP 协议的客户端编程工具包,并且它支持HTTP 协议最新的版本和建议。HttpClient 已经应用在很多的项目中,比如Apache Jakarta 上很着名的另外两个开源项目Cactus 和HTMLUnit 都使用了HttpClient。现在HttpClient最新版本为HttpClient 功能介绍

以下列出的是HttpClient 提供的主要的功能,要知道更多详细的功能可以参见HttpClient 的主页。

(1)实现了所有HTTP 的方法(GET,POST,PUT,HEAD 等)

(2)支持自动转向

(3)支持HTTPS 协议

(4)支持代理服务器等

基本功能的使用

(1) GET方法

使用HttpClient 需要以下6 个步骤:

1. 创建HttpClient 的实例

2. 创建某种连接方法的实例,在这里是GetMethod。在GetMethod 的构造函数中传入待连接的地址

3. 调用第一步中创建好的实例的execute 方法来执行第二步中创建好的method 实例

4. 读response

5. 释放连接。无论执行方法是否成功,都必须释放连接

6. 对得到后的内容进行处理

根据以上步骤,我们来编写用GET方法来取得某网页内容的代码。

大部分情况下HttpClient 默认的构造函数已经足够使用。HttpClient httpClient = new HttpClient();

创建GET方法的实例。在GET方法的构造函数中传入待连接的地址即可。用GetMethod 将会自动处理转发过程,如果想要把自动处理转发过程去掉的话,可以调用方法setFollowRedirects(false)。GetMethod getMethod = new GetMethod(".....");

调用实例httpClient的executeMethod方法来执行getMethod。由于是执行在网络上的程序,在运行executeMethod方法的时候,需要处理两个异常,分别是HttpException和IOException。引起第一种异常的原因主要可能是在构造getMethod的时候传入的协议不对,比如不小心将"http"写成"htp",或者服务器端返回的内容不正常等,并且该异常发生是不可恢复的;第二种异常一般是由于网络原因引起的异常,对于这种异常(IOException),HttpClient 会根据你指定的恢复策略自动试着重新执行executeMethod方法。HttpClient的恢复策略可以自定义(通过实现接口HttpMethodRetryHandler来实现)。通过httpClient的方法setParameter设置你实现的恢复策略,本文中使用的是系统提供的默认恢复策略,该策略在碰到第二类异常的时候将自动重试3次。executeMethod返回值是一个整数,表示了执行该方法后服务器返回的状态码,该状态码能表示出该方法执行是否成功、需要认证或者页面发生了跳转(默认状态下GetMethod的实例是自动处理跳转的)等。etParameter,

new DefaultHttpMethodRetryHandler());

.");

etParameter,

new DefaultHttpMethodRetryHandler());

try {

..";

PostMethod postMethod = new PostMethod(url);

;

}

return;

}

4 使用HttpClient过程中常见的一些问题

下面介绍在使用HttpClient过程中常见的一些问题。

字符编码

某目标页的编码可能出现在两个地方,第一个地方是服务器返回的http头中,另外一个地方是得到的html/xml页面中。

在http头的Content-Type字段可能会包含字符编码信息。例如可能返回的头会包含这样子的信息:Content-Type: text/html; charset=UTF-8。这个头信息表明该页的编码是UTF-8,但是服务器返回的头信息未必与内容能匹配上。比如对于一些双字节语言国家,可能服务器返回的编码类型是UTF-8,但真正的内容却不是UTF-8编码的,因此需要在另外的地方去得到页面的编码信息;但是如果服务器返回的编码不是UTF-8,而是具体的一些编码,比如

gb2312等,那服务器返回的可能是正确的编码信息。通过method对象的getResponseCharSet()方法就可以得到http头中的编码信息。

对于象xml或者html这样的文件,允许作者在页面中直接指定编码类型。比如在html

中会有这样的标签;或者在xml中会有这样的标签,在这些情况下,可能与http头中返回的编码信息冲突,需要用户自己判断到底那种编码类型应该是真正的编码。

自动转向

根据RFC2616中对自动转向的定义,主要有两种:301和302。301表示永久的移走(Moved Permanently),当返回的是301,则表示请求的资源已经被移到一个固定的新地方,任何向该地址发起请求都会被转到新的地址上。302表示暂时的转向,比如在服务器端的servlet程序调用了sendRedirect方法,则在客户端就会得到一个302的代码,这时服务器返回的头信息中location的值就是sendRedirect转向的目标地址。

HttpClient支持自动转向处理,但是象POST和PUT方式这种要求接受后继服务的请求方式,暂时不支持自动转向,因此如果碰到POST方式提交后返回的是301或者302的话需要自己处理。就像刚才在POSTMethod中举的例子:如果想进入登录BBS后的页面,必须重新发起登录的请求,请求的地址可以在头字段location中得到。不过需要注意的是,有时候location 返回的可能是相对路径,因此需要对location返回的值做一些处理才可以发起向新地址的请求。

另外除了在头中包含的信息可能使页面发生重定向外,在页面中也有可能会发生页面的重定向。引起页面自动转发的标签是:

如果你想在程序中也处理这种情况的话得自己分析页面来实现转向。需要注意的是,在上面那个标签中url的值也可以是一个相对地址,如果是这样的话,需要对它做一些处理后才可以转发。

处理HTTPS协议

HttpClient提供了对SSL的支持,在使用SSL之前必须安装JSSE。在Sun提供的以后的版本中,JSSE已经集成到JDK中,如果你使用的是以前的版本则必须安装JSSE。JSSE不同的厂家有不同的实现。下面介绍怎么使用HttpClient来打开Https连接。这里有两种方法可以打开https连接,第一种就是得到服务器颁发的证书,然后导入到本地的keystore中;另外一种办法就是通过扩展HttpClient的类来实现自动接受证书。

方法1,取得证书,并导入本地的keystore:

安装JSSE (如果你使用的JDK版本是或者以上就可以跳过这一步)。本文以IBM的JSSE 为例子说明。先到IBM网站上下载JSSE的安装包。然后解压开之后将包拷贝到

\lib\ext\目录下。

取得并且导入证书。证书可以通过IE来获得:

1.用IE打开需要连接的https网址,会弹出如下对话框:

2.单击"View Certificate",在弹出的对话框中选择"Details",然后再单击"Copy to File",根据提供的向导生成待访问网页的证书文件

3.向导第一步,欢迎界面,直接单击"Next",

4.向导第二步,选择导出的文件格式,默认,单击"Next",

5.向导第三步,输入导出的文件名,输入后,单击"Next",

6.向导第四步,单击"Finish",完成向导

7.最后弹出一个对话框,显示导出成功

用keytool工具把刚才导出的证书倒入本地keystore。Keytool命令在

\bin\下,打开命令行窗口,并到\lib\security\目录下,运行下面的命令:

keytool -import -noprompt -keystore cacerts -storepass changeit -alias yourEntry1 -file

其中参数alias后跟的值是当前证书在keystore中的唯一标识符,但是大小写不区分;参数file后跟的是刚才通过IE导出的证书所在的路径和文件名;如果你想删除刚才导入到keystore的证书,可以用命令:

keytool -delete -keystore cacerts -storepass changeit -alias yourEntry1

写程序访问https地址。如果想测试是否能连上https,只需要稍改一下GetSample例子,把请求的目标变成一个https地址。

GetMethod getMethod = new GetMethod("your url");

运行该程序可能出现的问题:

1. 抛出异常Algorithm SSL not available。出现这个异常可能是因为没有加JSSEProvider,如果用的是IBM的JSSE Provider,在程序中加入这样的一行:if("") == null)

(new IBMJSSEProvider());

或者也可以打开\lib\security\,在行

后面加入 2. 抛出异常SSL implementation not available。出现这个异常可能是你没有把拷贝到\lib\ext\目录下。

3. 抛出异常unknown certificate。出现这个异常表明你的JSSE应该已经安装正确,但是可能因为你没有把证书导入到当前运行JRE的keystore中,请按照前面介绍的步骤来导入你的证书。

方法2,扩展HttpClient类实现自动接受证书

因为这种方法自动接收所有证书,因此存在一定的安全问题,所以在使用这种方法前请仔细考虑您的系统的安全需求。具体的步骤如下:

提供一个自定义的socket factory()。这个自定义的类必须实现接口,在实现接口的类中调用自定义的X509TrustManager,这两个类可以在随本文带的附件中得到创建一个的实例,指定协议名称和默认的端口号Protocol myhttps = new

Protocol("https", new MySecureProtocolSocketFactory (), 443);

注册刚才创建的https协议对象("https ", myhttps);

然后按照普通编程方式打开https的目标地址,代码请参见

5 处理代理服务器

HttpClient中使用代理服务器非常简单,调用HttpClient中setProxy方法就可以,方法的第一个参数是代理服务器地址,第二个参数是端口号。另外HttpClient也支持SOCKS代理。

().setProxy(hostName,port);

java 压缩命令jar

java 压缩命令jar jar工具是个java应用程序,可将多个文件合并为单个JAR归档文件。jar是个多用途的存档及压缩工具,它基于ZIP和ZLIB压缩格式。然而,设计jar的主要目的是便于将java Applet或应用程序打包成单个归档文件。 将Java Applet或应用程序的组件(.class 文件、图像和声音)合并成单个归档文件时,可以通过浏览器等进行下载,这大大缩短了下载时间。jar还能压缩文件,从而进一步提高了下载速度。 jar [命令选项] [manifest] destination input-file [input-files] 其命令选项的详细参数如下: ● c 在标准输出上创建新归档或空归档。 ●t 在标准输出上列出内容表。 ●x[file] 从标准输入提取所有文件,或只提取指定的文件。如果省略了file,则提取所 有文件;否则只提取指定文件。 ● f 第二个参数指定要处理的jar文件。在c(创建)情形中,第二个参数指的是要创建 的jar文件的名称(不是在标准输出上)。在t或x(表或抽取)这两种情形中,x指定 要列出或抽取的jar文件。 ●v 在标准错误输出设备上生成长格式的输出结果。 ●m 包括指定的现有清单文件中的清单信息,如“jar cmf myManifestFile myJarFile *.class”。 ●O 只储存,不进行ZIP压缩。 ●M 不创建项目的清单文件。 ●u 通过添加文件或更改清单来更新现有的JAR文件,如“jar -uf foo.jar foo.class”将 文件foo.class添加到现有的JAR文件foo.jar中;而“jar umf manifest foo.jar”则用manifest 中的信息更新foo.jar的清单。 ● C 在执行jar命令期间更改目录,如“jar -uf foo.jar -C classes *”将classes目录内的 所有文件加到foo.jar中,但不添加类目录本身。 通过上述内容,使用jar命令可以非常方便的,将一些Java文件合并或者压缩成jar文件。例如,将“F:\workspace”文件夹中,所有.class文件打包成JAR文件。 首先,输入两次“cd..”命令,并按【回车】键,退到C盘根目录。再输入“cd workspace”命令,按【回车】键,进行workspace文件夹,如图1-18所示。 然后,在命令提示符下,输入“jar cf file.jar *.class”命令,并按【回车】键,将class文件合并成file.jar文件,如图1-19所示。

常用包 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/c210433133.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/c210433133.html,ng.reflect包:提供用于反射对象的工具。 6、java.awt.image包:处理和操纵来自于网上的图片的java工具类库。 7、java.wat.peer包:很少在程序中直接用到,使得同一个java程序在不同的软硬件平台上运行。 8、java.applet包:用于执行小程序的类,如Applet类。 9、https://www.360docs.net/doc/c210433133.html,包:实现网络功能的类库有Socket类、ServerSocket类。 10、java.corba包和java.corba.orb包。

JAVA打包称JAR怎么带上JRE

让java程序带上精简的jre(附工具) java是跨平台的东西,但有的时候我们不需要它去跨平台,我们希望能想c++做的程序一样,编码和简单 处理后能够在系统运行。 这次的项目是要放到classmate pc上,这款机器是为学生订做的,系统资源很有限,一个jre1.5就70多M,放在上面肯定是不行的。于是我找了一些相关的资料,提供链接如下: 如何制作最小的RCP程序压缩包(包含JRE) java程序发布之jre篇 基本知道思路了,我把写的程序打包成jar,能双击运行了,然后拷贝一个jre到程序目录下,具体是这 样的,目录叫dict,dict下面有dict.jar、jre(目录),然后写了一个cmd脚本: @echo off set path=%cd%\jre\bin java -jar -verbose:class dict.jar >>class.txt pause 这样程序使用的就是当前目录下的jre,程序运行后,最好把所有的功能使用一遍,这样输出了一个文件class.txt,里面有所有需要的class,其格式如下: [Opened D:\data\dict\jre\lib\rt.jar] [Loaded https://www.360docs.net/doc/c210433133.html,ng.Object from D:\data\dict\jre\lib\rt.jar] [Loaded java.io.Serializable from D:\data\dict\jre\lib\rt.jar] [Loaded https://www.360docs.net/doc/c210433133.html,parable from D:\data\dict\jre\lib\rt.jar] [Loaded https://www.360docs.net/doc/c210433133.html,ng.CharSequence from D:\data\dict\jre\lib\rt.jar] [Loaded https://www.360docs.net/doc/c210433133.html,poundFileReader$FileEntry from file:/D:/data/dict/dict.jar] 我们依照这个文件来裁剪rt.jar: 首先在utralEdit中进行一些处理,去掉所有不是rt.jar中的class的行,去掉from后面的,去掉loaded 等无关项目,再把“.”替换成“/”.这个可以利用正则表达式等轻松处理。处理完后得到的文件类似如下格式: java/lang/Object java/io/Serializable java/lang/Comparable java/lang/CharSequence java/lang/String 然后写一个脚本或者程序处理,将rt中需要的的class拷贝到另一个对应的文件夹rt1,我用java写了 一个,没有时间仔细改,但能完成人物了。代码如下: import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.LineNumberReader; public class ReduceRt { //文件拷贝 public static boolean copy(String file1,String file2) { try //must try and catch,otherwide will compile error

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库

linux安装jar命令

linux安装jar命令 linux系统下jar是随着jdk安装的,所以安装jar其实很容易。下面由小编为大家整理了linux下安装jar命令的相关知识,希望大家喜欢! linux下安装jar命令 jar是随着jdk的安装的。在jdk安装的目录下有bin目录中,windows下的文件名为jar.exe,linux下文件名为jar.它的运行需要用到jdk安装目录下lib目录中的tools.jar. jar文件在linux下的安装命令 首先安装java 的jdk..并设置java environment. then the order is: [root@localhoat root]# java -jar /the directory and file name, include .jar 附:linux下jar命令用法详解 jar的用法: jar{ctxu}[vfm0M][jar-文件][manifest-文件][-c 目录] 文件名。。。 {ctxu}是jar命令的子命令,每次jar命令中只可以包含一个ctxu 中的一个,分别表示: -c 创建新的jar文件包--常用于打包 -t 列出jar文件包的内容列表 -x 展开jar文件包的指定文件或者所有文件--常用于解

开包 -u 更新已经存在的jar文件包 [vmf0M]中可以选,也可以不选,是jar命令的选项参数: -v 生成详细报告并打印到标准输出 -f 指定jar文件名,这个参数是必须的 -m 指定需要包含的manfest清单文件 -0 只存储不压缩,速度快 -M 不生成所有的清单文件 经常组合使用cv0Mf/xvMf 补充:linux下运行jar包命令 java -jar xxxx.jar Linux平台通过以下命令执行jar文件。# java -jar file.jar linux下执行jar文件方法:命令行下进入文件目录,执行java -jar file.jar即可,也可在桌面创建一个启动器,在命令栏填写相关的命令:java -jar /file路径/file.jar,这样在桌面双击即可打开该jar 文件创建可执行的JAR 文件包详解:JAR 文件就是... linux下执行jar文件方法:命令行下进入文件目录,执行java -jar file.jar即可,也可在桌面创建一个启动器,在命令栏填写相关的命令:java -jar /file路径/file.jar,这样在桌面双击即可打开该jar 文件创建可执行的JAR 文件包详解:JAR 文件就是... java -jar test.jar 在linux命令行下对jar进行解压缩操作,比如有个jar包

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

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

jar使用方法

jar使用方法 jxl.jar是通过java操作excel表格的工具类库。下面是为您带来的jar使用方法,希望对大家有所帮助。 jar 使用方法: (1)创建jar包 ?1jar cf hello.jar hello 利用test目录生成hello.jar包,如hello.jar存在,则覆盖 (2)创建并显示打包过程 ?1jar cvf hello.jar hello 利用hello目录创建hello.jar包,并显示创建过程 例: ?1E:\>jar cvf hello.jar hello 标明清单(manifest) 增加:hello/(读入= 0) (写出= 0)(存储了0%) 增加:hello/TestServlet2.class(读入= 1497) (写出= 818)(压缩了45%) 增加:hello/HelloServlet.class(读入= 1344) (写出= 736)(压缩了45%) 增加:hello/TestServlet1.class(读入= 2037) (写出= 1118)(压缩了45%)

(3)显示jar包: jar tvf hello.jar 查看hello.jar包的内容 指定的jar包必须真实存在,否则会发生FileNoutFoundException。 (4)解压jar包: ?1jar xvf hello.jar 解压hello.jar至当前目录 (5)jar中添加文件: ?1jar uf hello.jar HelloWorld.java 将HelloWorld.java添加到hello.jar包中 (6)创建不压缩内容jar包: ?1jar cvf0 hello.jar *.class 利用当前目录中所有的.class文件生成一个不压缩jar包 (7)创建带manifest.mf文件的jar包: ?1jar cvfm hello.jar manifest.mf hello 创建的jar包多了一个META-INF目录,META-INF止录下多了一个manifest.mf文件,至于manifest.mf的作用,后面会提到. (8)忽略manifest.mf文件: ?1jar cvfM hello.jar hello 生成的jar包中不包括META-INF目录及manifest.mf文件 (9)加-C应用: ?1jar cvfm hello.jar mymanifest.mf -C hello/

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/c210433133.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/c210433133.html,ng.*的扩展。必须使用的jar包。 commons-logging.jar: Apache Commons包中的一个,包含了日志功能,必须使用的jar包。这个包本身包含

Java中各个包的主要作用

Java中常用包的主要作用 java.util是JA V A的utility工具包 https://www.360docs.net/doc/c210433133.html,ng是JAV A的language核心语言包 java.awt是JA V A的abstract window toolkit,抽象窗口工具包 java.applet是创建APPLET的必须包 https://www.360docs.net/doc/c210433133.html,是JAV A有关网络操作的包 java.io是JAV A的输入输出流的包 java.sql是JAV A的数据库操作包 javax.swing是新的界面包 javax开头的都是扩展包 -------------------------------------------------------- java.applet支持小应用程序的结构 java.awt提供图形用户接口的能力 java.awt.color支持颜色空间和外形 java.awt.datatransfer与系统的剪贴板交换数据 java.awt.dnd支持拖拉操作 java.awt.event处理事件 java.awt.font描述多种字体类型 java.awt.geom允许你使用几何形状 java.awt.im允许编辑组件中日文,中文,韩文的输入java.awt.im.spi支持二选一的输入设备(在Java2,v1.3中加入)

java.awt.image处理图像 java.awt.image.renderable支持独立显示图像 java.awt.print支持一般的打印功能 java.beans允许你建立软件组件 java.beans.beancontext为bean提供可执行环境 java.io输入输出数据 https://www.360docs.net/doc/c210433133.html,ng提供核心功能 https://www.360docs.net/doc/c210433133.html,ng.ref使能与垃圾回收交互 https://www.360docs.net/doc/c210433133.html,ng.reflect运行时分析代码 java.math处理大整数和十进制数 https://www.360docs.net/doc/c210433133.html,支持网络功能 java.rmi支持远程方法调用 java.rmi.activation激活永久对象 java.rmi.dgc管理分布垃圾回收 java.rmi.registry映射名称到远程对象引用 java.rmi.server支持远程方法调用 java.security处理证书,密钥,摘要,签名和其他安全功能 java.security.acl管理访问控制列表 java.security.cert分析和管理证书 java.security.interfaces为DSA(数字签名算法)定义接口java.security.spec设定密钥和算法参数 java.sql与SQL(结构化查询语言)数据库交互java.text格式化,查询和处理文本

jar可执行程序如何运行

win7中Java程序*.jar怎么运行? 首先你要确认自己安装了JDK(JA V A development kit)java开发工具,或者JRE(java running environment)java运行环境中的一个,JDK安装时会自带安装JRE,在环境变量中JRE中bin中的java.exe和javaw.exe配置路径。 1)右键单击计算机图标 2)属性 3)高级系统设置 4)环境变量 5)在PATH最后面添加java.exe和javaw.exe的安装路径,例如我的安装路是E:\所有软件安装根目录\JDK\jre\bin 1.如果你设置了环境变量的话,可以使用:jre目录下面的命令 javaw -jar jar包名 或 java -jar jar包名 来运行jar文件。也可以写入一个bat文件里面,在双击打开这个bat文件就可以运行了(也需要配置环境变量)。 注:如果是控制台需要输出信息使用java,如果是窗体,不需要控制台信息,那么使用javaw。 2.也可以在jar右键,选择打开方式为java.exe或javaw.exe(一般在Java\jre7\bin 文件夹下),然后修改注册表win+R输入regedit进入注册表。 HKEY_CLASSES_ROOT\Applications\javaw.exe\shell\open\command 键下面的默认值为: 你的java安装目录\bin\javaw.exe" -jar "%1" "%*" 如:C:\Program Files (x86)\Java\jre7\bin\javaw.exe" -jar "%1" "%*" 这是因为java或javaw运行jar包的时候需要加入参数“-jar”,故需要修改注册

将CLASS文件生成JAR文件

将CLASS文件生成JAR文件 常常在网上看到有人询问:如何把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.class 2. 创建可执行的JAR 文件包 制作一个可执行的JAR 文件包来发布你的程序是JAR 文件包最典型的用法。 Java 程序是由若干个 .class 文件组成的。这些.class 文件必须根据它们所属的包不同而分级分目录存放;运行前需要把所有用到的包的根目录指定给CLASSPA TH 环境变量或者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 文件之后,我们的目录结构变为: ==

JAVAC 命令详解

JAVAC 命令详解 结构 javac [ options ] [ sourcefiles ] [ @files ] 参数可按任意次序排列。 options 命令行选项。 sourcefiles 一个或多个要编译的源文件(例如MyClass.java)。 @files 一个或多个对源文件进行列表的文件。 说明 javac 有两种方法可将源代码文件名传递给javac: ?如果源文件数量少,在命令行上列出文件名即可。 ?如果源文件数量多,则将源文件名列在一个文件中,名称间用空格或回车行来进行分隔。然后在javac 命令行中使用该列表文件名,文件名前冠以@ 字符。 源代码文件名称必须含有.java后缀,类文件名称必须含有.class后缀,源文件和类文件都必须有识别该类的根名。例如,名为MyClass的类将写在名为MyClass.java的源文件中,并被编译为字节码类文件MyClass.class。 内部类定义产生附加的类文件。这些类文件的名称将内部类和外部类的名称结合在一起,例如MyClass$MyInnerClass.class。 应当将源文件安排在反映其包树结构的目录树中。例如,如果将所有的源文件放在/workspace 中,那么com.mysoft.mypack.MyClass的代码应该在 \workspace\com\mysoft\mypack\MyClass.java 中。

缺省情况下,编译器将每个类文件与其源文件放在同一目录中。可用-d 选项(请参阅后面的选项)指定其它目标目录。 工具读取用Java 编程语言编写的类和接口定义,并将它们编译成字节码类文件。 查找类型 当编译源文件时,编译器常常需要它还没有识别出的类型的有关信息。对于源文件中使用、扩展或实现的每个类或接口,编译器都需要其类型信息。这包括在源文件中没有明确提及、但通过继承提供信息的类和接口。 例如,当扩展java.applet.Applet时还要用到Applet的祖先类:java.awt.Panel、java.awt.Container、https://www.360docs.net/doc/c210433133.html,ponent和java.awt.Object。 当编译器需要类型信息时,它将查找定义类型的源文件或类文件。编译器先在自举类及扩展类中查找,然后在用户类路径中查找。用户类路径通过两种途径来定义:通过设置CLASSPATH环境变量或使用-classpath命令行选项。(有关详细资料,请参阅设置类路径)。如果使用-sourcepath选项,则编译器在sourcepath指定的路径中查找源文件;否则,编译器将在用户类路径中查找类文件和源文件。可用-bootclasspath和-extdirs选项来指定不同的自举类或扩展类;参阅下面的联编选项。 成功的类型搜索可能生成类文件、源文件或两者兼有。以下是javac对各种情形所进行的处理: ?搜索结果只生成类文件而没有源文件:javac使用类文件。 ?搜索结果只生成源文件而没有类文件:javac编译源文件并使用由此生成的类文件。 ?搜索结果既生成源文件又生成类文件:确定类文件是否过时。若类文件已过时,则javac重新编译源文件并使用更新后的类文件。否则,javac直接使用类文件。 缺省情况下,只要类文件比源文件旧,javac就认为它已过时。(-Xdepend选 项指定相对来说较慢但却比较可靠的过程。) javac 注意:javac可以隐式编译一些没有在命令行中提及的源文件。用-verbose选项可跟踪自动编译。

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并生成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!‖); } }

Java中各个主要包的作用

Java中各个主要包的作用(javax开头的都是扩展包) java.util是JAVA的utility工具包,包含一些使用工具类,如定义系统特性、使用与日期日历相关的函数等。 https://www.360docs.net/doc/c210433133.html,ng是JAVA的language核心语言包;如String、Math、Integer、System、Thread,提供常用的功能。特殊之处是不需要导入,是作为默认导入的包。 java.awt是JAVA的abstractwindow toolkit,抽象窗口工具包;包含了构成抽象窗口共具体的多个类,这些类用于构建和管理应用程序的图形用户(GUI)。 java.appl et是创建APPLET的必须包;包含applet运行时所需要的一些类。 https://www.360docs.net/doc/c210433133.html,是JAVA有关网络操作的包。 java.io是JAVA的输入输出流的包。 java.sql是JAVA的数据库操作包。 javax.swing是新的界面包。 java.applet 支持小应用程序的结构 java.awt提供图形用户接口的能力 java.awt.color支持颜色空间和外形 java.awt.datatransfer与系统的剪贴板交换数据 java.awt.dnd 支持拖拉操作 java.awt.event处理事件 java.awt.font 描述多种字体类型 java.awt.geom允许你使用几何形状 java.awt.im 允许编辑组件中日文,中文,韩文的的输入 java.awt.im.spi 支持二选一的输入设备(在java 2, v1.3中加入) java.awt.image 处理图像 j ava.awt.image.renderable支持独立显示图像 java.awt.print支持一般的打印功能 java.beans允许你建立软件组件 java.beans.beancontext 为bean 提供可执行环境 java.io 输入输出数据 https://www.360docs.net/doc/c210433133.html,ng提供核心功能

Java命令解释大全

Java命令大全及命令解释 Java常用的几种命令 (1) Java命令详细解释 (2) javac.exe (2) jar.exe (3) javadoc.exe (3) javah.exe (5) javap.exe (5) javaw.exe (6) HtmlConverter.exe (6) orbd.exe (6) policytool.exe (7) rmic.exe (7) rmid.exe (8) rmiregistry.exe (8) serialver.exe (8) servertool.exe (8) rmid (9) rmiregistry (10) serialver (10) jarsigner (11) keytool (12) native2ascii (12) appletviewer (13) extcheck (13) jar (14) javadoc (15) (经过网上搜集整理出来的,一些不常用的方法也收集了) Java常用的几种命令 javac:Java编译器,将Java源代码换成字节代 java:Java解释器,直接从类文件执行Java应用程序代码 appletviewer(小程序浏览器):一种执行HTML文件上的Java小程序类的Java浏览器javadoc:根据Java源代码及其说明语句生成的HTML文档 jdb:Java调试器,可以逐行地执行程序、设置断点和检查变量 javah:产生可以调用Java过程的C过程,或建立能被Java程序调用的C过程的头文件Javap:Java反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节代码含义jar:多用途的存档及压缩工具,是个java应用程序,可将多个文件合并为单个JAR归档文件。 htmlConverter——命令转换工具。

相关文档
最新文档