64位 jdk1.5 在win7 64位系统完美远行。如(rú)果你eclipse显示不能加载共(gòng)享库,那(nà)很可能是32位jdk运(yùn)行在64位系统中
JDK(Java Development Kit,Java开发包,Java开(kāi)发(fā)工具)是一(yī)个写Java的(de)applet和(hé)应用(yòng)程序的程序开发环(huán)境。它由一(yī)个处(chù)于(yú)操作(zuò)系(xì)统层之上的(de)运(yùn)行(háng)环境还有开发者(zhě)编译(yì),调试和运行用Java语言写的applet和应用程序所需的工具组成。
JDK(Java Development Kit)是Sun Microsystems针对Java开发员的产品。自从Java推出以来,JDK已经成(chéng)为使(shǐ)用最广(guǎng)泛的Java SDK(Software development kit)。
JDK包含的基本组件包括:
·javac – 编译器,将源程序转成(chéng)字(zì)节(jiē)码(mǎ)
·jar – 打包工具,将相关的类文件(jiàn)打(dǎ)包成一个文件(jiàn)
·javadoc – 文(wén)档生成器,从源码注释中(zhōng)提(tí)取(qǔ)文档
·jdb – debugger,查错工具
JDK中还包括完整的JRE(Java Runtime Environment,Java运行环境),也被称(chēng)为private runtime。包括了用于产品环境的各种库类,以及给开发(fā)员使用的(de)补(bǔ)充库,如国际化的库(kù)、IDL库。
JDK中还包括各种(zhǒng)例(lì)子(zǐ)程序,用以展示Java API中的各(gè)部分。
从初学者角度来看,采用JDK开发Java程序能够(gòu)很快理解程序中各部分代码之间的关系,有利于理解Java面向对象的设计思(sī)想。JDK的另一个显著特点是(shì)随着Java (J2EE、J2SE以及J2ME)版本(běn)的升级(jí)而升级(jí)。但它的缺点(diǎn)也是非常明显的(de)就是从(cóng)事大规(guī)模企业级Java应用开发非常困难(nán),不能进(jìn)行复杂的(de)Java软件开发,也不利于(yú)团体协同开发。
JDK一般有三种版本:
SE(J2SE),standard edition,标准版(bǎn),是我们通常用的一(yī)个(gè)版本
EE(J2EE),enterpsise edtion,企业版,使用(yòng)这种JDK开(kāi)发J2EE应用程序(xù),
ME(J2ME),micro edtion,主要用(yòng)于移(yí)动(dòng)设备、嵌入式(shì)设备上的java应用程序
Java开发(fā)工具(JDK)是许多Java专家最初使用的开发环境。尽管许多编程人员已经使用(yòng)第三方的开发工具,但JDK仍(réng)被当作(zuò)Java开发的重要工具。
JDK由一(yī)个标准类库和(hé)一组建立,测试(shì)及建立文(wén)档的Java实用程序组成。其核心(xīn)Java
API是一些预定(dìng)义的类库,开发人员需要(yào)用这些类(lèi)来访问Java语言的功能(néng)。Java API包(bāo)括一些重要的语(yǔ)言结构以及基本图形,网络和文件I/O。一般来说,Java API的非I/O部(bù)分对于运行Java的所有(yǒu)平台(tái)是相(xiàng)同的(de),而(ér)I/O部分则仅在通用Java环境中实(shí)现。
作为JDK实用程序(xù),工具库中有七种主要(yào)程序。
Javac: Java:Java解释器,直接从类文(wén)件执行Java应用程(chéng)序字节代码。
appletviewer:小程序浏览器,一种执(zhí)行HTML文件(jiàn)上的Java小程序的(de)Java浏览器。
Javadoc:根据(jù)Java源码及说(shuō)明语句生成HTML文(wén)档。
Jdb:Java调试器,可以(yǐ)逐行(háng)执行程序(xù),设置(zhì)断(duàn)点(diǎn)和检查变量。
javah:产(chǎn)生(shēng)可以调用Java过程(chéng)的C过程,或建立能被Java程序调用的C过程的(de)头文件。
Javap:Java反汇编器,显示编译类文(wén)件(jiàn)中的(de)可访问功(gōng)能和数据,同(tóng)时显示字节代(dài)码含义(yì)。
一、JDK文件结构(gòu)
本文档给出 JDK 目录及其所包含(hán)的文(wén)件的概述。
开(kāi)发文(wén)件(jiàn)和目录
本(běn)节对开发 Java 平台应用程序(xù)所要求的(de)文件和目录(lù)进行说明。(不(bú)要求的目录有:演示程序、Java 源(yuán)代码和 C 头文件。下一(yī)节附(fù)加文件和目录将对它(tā)们进行论述。) 下图列出的是最(zuì)重要的目录:
jdk1.2
___________|____________________
| | |
bin lib jre
| | __________|___________
java.exe tools.jar | |
javac.exe dt.jar bin lib
javap.exe _____|____ ________|________
javah.exe | | | | |
javadoc.exe java.exe classic rt.jar ext
security
java.dll | i18n.jar |
awt.dll jvm.dll iiimp.jar
假定 JDK 软件安装在(zài) c:jdk1.2 目录中,下(xià)面列出的是那些关键目录及它们(men)之所(suǒ)以重(chóng)要的原因:
c:jdk1.2
JDK 软件安装(zhuāng)的根目(mù)录(lù)。包含版权、许可及 README 文件。还包括:
src.jar -- 构成 Java 平台核心(xīn) API 的所有(yǒu)类(lèi)的源文件(jiàn)的归(guī)档。
c:jdk1.2bin
Java 开发工具(jù)包 (JDK) 中所包含的开发(fā)工具(jù)的可执行(háng)文件。PATH 环境变量(liàng)应该包含(hán)一个指(zhǐ)示(shì)此目(mù)录的(de)项。有关工具(jù)的详细信息,参见 JDK 工(gōng)具。
c:jdk1.2lib
开发工(gōng)具使用的文件。这些文件(jiàn)包(bāo)括 tools.jar,它包含支持 JDK 的工具和(hé)实用程序的(de)非核心类。还包括 dt.jar,它是 BeanInfo 文件的 DesignTime 归档,BeanInfo 文件用来告诉交(jiāo)互开发(fā)环境 (IDE) 如何显(xiǎn)示(shì) Java 组件以及(jí)如何让开发人员根(gēn)据应(yīng)用程序自定义它们。
c:jdk1.2jre
JDK 开发(fā)工具(jù)所使用(yòng)的 Java 运行时(shí)环境的根目录。运行时环境是 Java 1.2 平台的(de)实(shí)现。除了(le)文档外(wài),它与可部署的 JRE 完全(quán)相同。
c:jdk1.2jrebin
Java 平台使(shǐ)用的工具和库的可执行文件及(jí) DLL。可执行文件与 /jdk1.2/bin 中(zhōng)的(de)文(wén)件相同。java 启动器工具担当应用程序启动器的角色,它替代(dài)了与 1.1 版的 JDK 软件一同发行的(de)旧 jre 工具。不必将该目录放在 PATH 环境变量中。
c:jdk1.2jrebinclassic
包含经典虚拟机使用的(de) Windows DLL 文件。经典虚拟机是(shì) Java 虚拟机(jī)的语言(yán)解(jiě)释器版本。当新的虚拟机可用时,它们的 DLL 将被安装在 jre/bin 的某个新子目录中。
c:jdk1.2jrelib
Java 运行时环(huán)境(jìng)使用的代码(mǎ)库、属(shǔ)性设置和资源文(wén)件。包括:
rt.jar -- 自举类(构成 Java 平(píng)台核心 API 的(de) RunTime 类)。
i18n.jar -- 字符(fú)转换类及其它与国际化和(hé)本地(dì)化有关的类(lèi)。
除(下面将要阐述的) ext 子目(mù)录以外(wài),还有几个(gè)资源(yuán)子(zǐ)目录不在此处说明。
c:jdk1.2jrelibext
Java 平台扩展(zhǎn)的缺省(shěng)安装目录。例(lì)如,这是安装(zhuāng)时 JavaHelp jar 文件的安装目录。包(bāo)括:
iiimp.jar -- 实现 Internet-Intranet 输入方法协议(yì)的类,供从使用(yòng)国际字符集的设(shè)备上(shàng)接收输入的应用程序来使用。
c:jdk1.2jrelibsecurity
包(bāo)含(hán)用于安全管理的文件。这些文件包(bāo)括安(ān)全策(cè)略 (java.policy) 和安全(quán)属(shǔ)性 (java.security) 文件。
附加(jiā)文件和(hé)目(mù)录
本节(jiē)说明演(yǎn)示程序、Java 源代(dài)码和 C 头文件的目录结(jié)构(gòu)。下面是目(mù)录结构(gòu):
jdk1.2
__________ _____|_____ _____________
| | | |
src.jar demo include include-old
___|___
| |
applets jfc
|
Java2D
以上所显示的附加目录(lù)为:
c:jdk1.2demo
含(hán)有源代码的程序示例,用于显示如(rú)何为 Java 平台编程。
c:jdk1.2demoapplets
可用在网页上的 applet。
c:jdk1.2demojfc
使用新 JFCSwing 组件的示例(lì)。
c:jdk1.2demojfcJava2D
使用新 Java 2D 图形的示例(lì)。
c:jdk1.2include
C 语言头文(wén)件(jiàn),它支持(chí)使用(yòng) Java 本地接口 【 web】和(hé) Java 虚拟机调试程序接口 【 web】 的本地代码编程技术。
c:jdk1.2include-old
头文(wén)件(jiàn),支持使用旧接口的本地代码编(biān)程技术。提供这些头文件只是为了向后兼容。所有 Java 虚拟(nǐ)机(jī)都不推荐、不支持也不提供这(zhè)些接(jiē)口。
二、JDK1.5新(xīn)特性介绍
“JDK1.5”(开发代号猛虎)的一个重要主题就是通过新增一(yī)些特性来简化开(kāi)发,这些特性包括泛型,for-each 循环,自动装包/拆包,枚举,可变参数, 静(jìng)态(tài)导入 。使(shǐ)用这些特性有(yǒu)助于(yú)我们编写更加清(qīng)晰,精悍,安全的代码。
下(xià)面我们简单介绍一下这些新特性。
1.泛型(Generic)
C++通过模板技(jì)术(shù)可以指定集(jí)合的(de)元素类型,而(ér)Java在1.5之前(qián)一(yī)直(zhí)没有相对应的功能。一个集(jí)合可以放任何(hé)类(lèi)型的对象,相应地从集合里(lǐ)面拿对象的时候我们(men)也(yě)不得(dé)不对他们进行强制得类型转换(huàn)。猛虎引入了泛型,它允许指定(dìng)集合里元素的类型,这样你可以得(dé)到强类型在编译时刻进(jìn)行类型检查的好处。
Collection c = new ArrayList();
c.add(new Date());
编译器会给出一个错(cuò)误(wù):
add(java.lang.String) in java.util.Collection cannot be applied to (java.util.Date)
2.For-Each循环
For-Each循环得加入简(jiǎn)化了集合的遍(biàn)历(lì)。假设我们要(yào)遍历一个集合对其中的元素进(jìn)行一些处理(lǐ)。典型的代码(mǎ)为:
void processAll(Collection c){
for(Iterator i=c.iterator(); i.hasNext();){
MyClass myObject = (MyClass)i.next();
myObject.process();
}
}
使用For-Each循环,我们(men)可以把代码改(gǎi)写成:
void processAll(Collection c){
for (MyClass myObject :c)
myObject.process();
}
这(zhè)段代码(mǎ)要比上面清(qīng)晰许多(duō),并且避免了强制类(lèi)型(xíng)转换。
3.自动装包/拆包(Autoboxing/unboxing)
自动装包/拆包大大(dà)方便了基本类型数据和它们包(bāo)装(zhuāng)类地(dì)使(shǐ)用。
自动(dòng)装包:基本类型(xíng)自动转为包装(zhuāng)类(lèi).(int >> Integer)
自动拆包:包装类自动(dòng)转(zhuǎn)为基本类型.(Integer >> int)
在(zài)JDK1.5之前,我们总是对(duì)集(jí)合不能存放基本类型而耿耿(gěng)于(yú)怀,现(xiàn)在自动转换机制解决(jué)了我们的问题。
int a = 3;
Collection c = new ArrayList();
c.add(a);//自动转(zhuǎn)换(huàn)成(chéng)Integer.
Integer b = new Integer(2);
c.add(b + 2);
这里Integer先自(zì)动转换为int进(jìn)行加法运算(suàn),然后int再次转换为Integer.
4.枚(méi)举(jǔ)(Enums)
JDK1.5加入(rù)了一个全(quán)新(xīn)类型的“类(lèi)”-枚举类型。为此(cǐ)JDK1.5引入了一(yī)个新(xīn)关键(jiàn)字enmu. 我们(men)可以这样来(lái)定义一个枚(méi)举类(lèi)型。
public enum Color
{
Red,
White,
Blue
}
然(rán)后可(kě)以这样来使用(yòng)Color myColor = Color.Red.
枚举(jǔ)类型(xíng)还提供了两个有(yǒu)用的静态(tài)方法values()和valueOf(). 我们(men)可(kě)以(yǐ)很方(fāng)便地使用它们,例如(rú)
for (Color c : Color.values())
System.out.println(c);
5.可变参数(Varargs)
可变参数(shù)使(shǐ)程序员可以声明一个接(jiē)受可变(biàn)数目参数的(de)方法。注意,可变(biàn)参数必须是(shì)函(hán)数声明中的最后一个参数。假设我们要写一(yī)个简(jiǎn)单的(de)方法打印一些(xiē)对象,
util.write(obj1);
util.write(obj1,obj2);
util.write(obj1,obj2,obj3);
…
在(zài)JDK1.5之前,我(wǒ)们可以用(yòng)重载来实现,但(dàn)是这(zhè)样就需要写很多的重载函数(shù),显(xiǎn)得(dé)不是很有效。如果使用可变参数(shù)的话我们只需(xū)要一个函数就行了
public void write(Object... objs) {
for (Object obj: objs)
System.out.println(obj);
}
在引入可(kě)变参数以后,Java的反射包也更加方便(biàn)使用了(le)。对(duì)于(yú)c.getMethod("test", new Object【0】).invoke(c.newInstance(), new Object【0】)),现在我们可(kě)以这样写(xiě)了c.getMethod("test").invoke(c.newInstance()),这(zhè)样的(de)代码比原来清(qīng)楚了很多。
6.静态导(dǎo)入(Static Imports)
要使用用(yòng)静态成员(方法和变量)我们必须给出(chū)提(tí)供这个方法的(de)类。使用静态导(dǎo)入可(kě)以使被导入类的所(suǒ)有静态变量和静态方(fāng)法在当前类直接可见,使用这些静态(tài)成员无需再给出他们的(de)类(lèi)名。
import static java.lang.Math.*;
…….
r = sin(PI * 2); //无需再写r = Math.sin(Math.PI);
不(bú)过,过度使用这个特(tè)性也(yě)会一定程度上降(jiàng)低(dī)代码地可读性。
JDK1.5 正式版即将(jiāng)发布,让我们共同期待(dài)吧。我们可以去http://java.sun.com/j2se/1.5.0/download.jsp,先(xiān)下载一个beta爽一把。
三、JDK的(de)命令(lìng)详解(jiě)(来源视(shì)点在线)
rmic
功能说明:
rmic 为远程对(duì)象生成 stub 和 skeleton。
语法:
rmic 【 options 】 package-qualified-class-name(s)
补充说明:
rmic 编译器根据(jù)编译后的(de) Java 类(含有远程(chéng)对象实现(xiàn))名,为远程对象生成 stub 和 skeleton(远程对象是指实现 java.rmi.Remote 接(jiē)口的对象)。在 rmic 命令中(zhōng)所给的类必须是经 javac 命令成功编(biān)译且(qiě)是完全包限(xiàn)定的(de)类。
命令选项
-classpath【路(lù)径】 指定 rmic 用于查(chá)询类(lèi)CLASSPATH 环境变量。目录用(yòng)冒(mào)号分隔。
-d【目录】 指定(dìng)类层次的根目录。此(cǐ)选项可用来指定(dìng) stub 和(hé) skeleton 文(wén)件(jiàn)的(de)目标目(mù)录。
-depend 使(shǐ)编译器考虑重新(xīn)编译从其(qí)它类引用的类。 一般来说,它只重新编(biān)译从源代码引用的遗漏或(huò)过期的类。
-g 允许(xǔ)生(shēng)成(chéng)调试表格。调试表(biǎo)格含(hán)有行(háng)号和局部(bù)变量(liàng)的有关信息,即 Java 调试工具所使用的信(xìn)息(xī)。缺省(shěng)情况下,只生成行号(hào)。
-J 与 -D 选(xuǎn)项联用,它将紧跟其后的(de)选项( -J 与 -D 之间(jiān)无空格)传给 java 解释器。
-keepgenerated 为 stub 和 skeleton 文件保留所生成(chéng)的(de) .java 源文件,并将这些(xiē)源文件写(xiě)到与 .class 文(wén)件相同的目录中(zhōng),如果要指定目录,则使用 -d 选项(xiàng)。
-nowarn 关闭警告(gào)。如果使用该选项,则编译器(qì)不输(shū)出任(rèn)何警告信息。
-show 显示 rmic 编译器(qì)的 GUI(图形(xíng)用户界(jiè)面)。输(shū)入一(yī)个或多个(gè)包限定(dìng)类名(míng)(以空格分隔),并按回车键或“显示(shì)”按钮,创建 stub 和(hé) skeleton。
-vcompat (缺(quē)省值)创建与 JDK 1.1 和 1.2 stub 协议版(bǎn)本都兼容的 stub 和(hé) skeleton。
-verbose 使编译器和链接器输出关于正在编译哪些(xiē)类和正在加载哪些类文件的信息。
-v1.1 创建 JDK 1.1 stub 协(xié)议版(bǎn)本的 stub 和 skeleton。
-v1.2 只创建 JDK 1.2 stub 协议版(bǎn)本的 stub。
rmid
功能(néng)说(shuō)明:
rmid 启(qǐ)动激活(huó)系统(tǒng)守护进程,以便能够在 Java 虚拟机上注册和激(jī)活对象。
语法:
rmid 【-port port】 【-log dir】
补充说明:
rmid 工具启动激活(huó)系统守护进(jìn)程。必须先启动激活系统守护进程,才(cái)能向激活系统(tǒng)注册可被激活的对象或在 Java 虚拟机(jī)上激活可被(bèi)激(jī)活的对象。
命(mìng)令选项
-C<某(mǒu)些命令行选项(xiàng)> 指定一个(gè)选项,在创建(jiàn)每个 rmid 的子守护进程(chéng)(激活(huó)组)时,该选项以命令行(háng)参数的形式传给该子守护进程。
-log【目录】 指定目(mù)录的名称,激(jī)活系统守护进程在该目录中写(xiě)入其(qí)数据(jù)库及相关信息。缺省(shěng)状态下,将在(zài)执行(háng) rmid 命令的目录中创(chuàng)建一个 log 目录。
-port【端口】 指(zhǐ)定 rmid 的注册服务程序所(suǒ)使用的端口。激活系统守护(hù)进程将 ActivationSystem 与该注册(cè)服务程序中的名称java.rmi.activation.ActivationSystem 捆(kǔn)绑(bǎng)在(zài)一起(qǐ)。
-stop 停止 -port 选项(xiàng)所指定端口上的当前(qián) rmid 调(diào)用。若未指定端口,则(zé)将(jiāng)停(tíng)止在端口 1098 上运行的 rmid。
rmiregistry
功(gōng)能说明:
rmiregistry 命令可在当前(qián)主机(jī)的指定端(duān)口上(shàng)启动(dòng)远程对象注册服务程序。
语法:
rmiregistry 【port】
补充说明:
rmiregistry 命令在当前主(zhǔ)机的(de)指定 port 上创建并启动远程对象注册服务程序。如果省略 port,则注册服务程序将在 1099 端口上启动。rmiregistry 命(mìng)令不产生任何输出而且一般(bān)在后台运行。远程对象注册服务程(chéng)序是自(zì)举命名服务。主机(jī)上的 RMI 服务器将(jiāng)利用它将远程对象绑定到名字上(shàng)。客户(hù)机即可查询远程对象(xiàng)并进行远程方(fāng)法调用。注册服(fú)务程序一般用于定位(wèi)应用程序(xù)需调用(yòng)其方法(fǎ)的第一个(gè)远程对象。该对象反过来对各应用(yòng)程序(xù)提供(gòng)相应的支持,用于(yú)查找其(qí)它对象。
java.rmi.registry.LocateRegistry 类的方法(fǎ)可用于在某台主(zhǔ)机(jī)或主机和端(duān)口上(shàng)获取注册服(fú)务程序操作。java.rmi.Naming 类的基于 URL 的方法将对注册服务程序进行操作,并可用(yòng)于(yú)查询远程(chéng)对象、将简单(字符(fú)串)名称绑定(dìng)到(dào)远(yuǎn)程对象、将新名称重新绑定到远程对象(xiàng)(覆盖旧绑定(dìng))、取消远程对象的绑定以及列出绑定在注(zhù)册服务程序上的 URL。
serialver
功能说明:
serialver 命令返回 serialVersionUID。
语(yǔ)法:
serialver 【 命令选(xuǎn)项 】
补充说明(míng):
serialver 以适于复制到演变类的形式(shì)返回一个(gè)或多个类的 serialVersionUID。不带参(cān)数调用时,它(tā)输出用法行。
命令选项
-show 显示(shì)一个简单的用户界面。输入完整的类名(míng)并按回车(chē)键或(huò)“显(xiǎn)示(shì)”按钮可显(xiǎn)示 serialVersionUID。
jarsigner
功能说(shuō)明:
为 Java 归档 (JAR) 文件产生签名(míng),并校验已签名的 JAR 文件的签名。
语(yǔ)法:
jarsigner 【 命令选项 】 jar-file alias
jarsigner -verify 【 命令(lìng)选项 】 jar-file
补充说(shuō)明:
jarsigner 工具用(yòng)于两(liǎng)个目(mù)的:
1:为 Java 归档 (JAR) 文件签名
2:校验(yàn)已(yǐ)签名的 JAR 文件的签名(míng)和完整性
命(mìng)令选项
-keystore【url】 指(zhǐ)定(dìng)密钥仓(cāng)库的(de) URL。缺省值(zhí)是用户(hù)的宿主目录(lù)中的(de) .keystore 文(wén)件(jiàn),它由系统属性(xìng)“user.home”决定。
-storetype【storetype】 指定要被实例化的(de)密钥仓库(kù)类型(xíng)。默认的密钥仓库类型是安全属性文件中 "keystore.type" 属性值所指定的那个类型,由 java.security.KeyStore 中的静态方法 getDefaultType 返回。
-storepass【password】 指定(dìng)访问密钥(yào)仓库(kù)所需的口令。这仅在签名(不是校验)JAR 文(wén)件时需(xū)要。在这种情况(kuàng)下,如果命令行中没(méi)有提供 -storepass 选项(xiàng),用户将被提示(shì)输(shū)入口令(lìng)。
-KeyPass【password】 指定用(yòng)于保护(hù)密(mì)钥仓库项(xiàng)(由命令(lìng)行中(zhōng)指(zhǐ)定的别名标出)的私钥的口令。使(shǐ)用 jarsigner 为 JAR 文(wén)件签(qiān)名时需要该口令。如果命令行中没(méi)有(yǒu)提供口(kǒu)令,且所(suǒ)需的(de)口令与密钥仓库的口令不同,则将(jiāng)提示用户输入它。
-sigfile【file】 指(zhǐ)定用于生成 .SF 和 .DSA 文件的基本文件名(míng)。
-signedjar【file】 指定用于(yú)已签名的 JAR 文件的名称。
-verify 如果(guǒ)它出现(xiàn)在(zài)命(mìng)令行中,则指定的 JAR 文件将被校(xiào)验,而不是签名。如果(guǒ)校验成功,将显示“jar verified”。如果试(shì)图校(xiào)验未签名的 JAR 文件(jiàn),或校验(yàn)被(bèi)不支持的算法(例如未安装 RSA 提供者时使用的(de) RSA)签名的 JAR 文件,则将有如下显示: "jar is unsigned. (signatures missing or not parsable)" 。
-certs 如果它与 -verify 和(hé) -verbose 选项一起出现在命令行中,则输出将包括(kuò) JAR 文件的每个签名人的(de)证(zhèng)书信(xìn)息。
-verbose 如(rú)果它出现(xiàn)在命令行(háng)中(zhōng),则代表“verbose”模(mó)式,它使 jarsigner 在(zài) JAR 签名或校验过程(chéng)中输出额外信息。
-internalsf 过去(qù),JAR 文件被签名时产生的(de) .DSA(签名块)文件包含一个同(tóng)时产生的 .SF 文件(签名文件)的完整编码副本。这种做法已被(bèi)更改。为了减(jiǎn)小输出 JAR 文件的整个大(dà)小,缺省情(qíng)况下 .DSA 文件不再(zài)包含 .SF 文(wén)件的副本。但是如果 -internalsf 出现在命令行中,将(jiāng)采(cǎi)用旧的做法。该选(xuǎn)项主要(yào)在测(cè)试时有(yǒu)用;实(shí)际(jì)上不应使用(yòng)它,因为这(zhè)样将消除有用(yòng)的(de)优化。
-sectionsonly 如果它出现(xiàn)在命令行(háng)中,则 JAR 文件被签名时(shí)生成的 .SF 文件(签名文件)将不包(bāo)括含有(yǒu)整(zhěng)个??的源文件相关(guān)的信息和散列。该选(xuǎn)项主要(yào)在测试时有用;实际(jì)上不应使用它,因为这样将消(xiāo)除有用的优化。
-J【javaoption】 将指定的 javaoption 串(chuàn)直接传(chuán)递到 Java 解释器(qì)。((jarsigner 实际上是解释器的一个 “wrapper”)。该(gāi)选(xuǎn)项(xiàng)不应含有任何空(kōng)格。它有助于调整(zhěng)执行环境或(huò)内存使用。要获得可用(yòng)的解释器选项(xiàng)的清单,可在(zài)命(mìng)令行键(jiàn)入(rù) java -h 或(huò) java -X。
keytool
功(gōng)能(néng)说明(míng):
管理由私钥和认证相关公钥的 X.509 证(zhèng)书链组成(chéng)的密钥(yào)仓库(数据库)。还管理来自可信任实体(tǐ)的(de)证书。
语法:
keytool 【 命令 】
补充说明(míng):
keytool 是(shì)个密钥和证书管理工具。它使用户能够管理自己的公钥/私钥对(duì)及相关证书,用于(通过数字签(qiān)名)自我认证(用户向别的(de)用户/服务认证自己)或数据(jù)完整性以及认证服务。它还允许用户储(chǔ)存(cún)他(tā)们的通信(xìn)对等者的(de)公钥(以证书形式)。
native2ascii
功能说(shuō)明:
将含(hán)有本地编码字符(既非(fēi) latin1 又非 Unicode 字符)的文件转换为 Unicode 编码字符的文件。
语法(fǎ):
native2ascii 【options】 【inputfile 【outputfile】】
补充说明(míng):
Java 编译器和其它 Java 工具(jù)只(zhī)能处理(lǐ)含有 Latin-1 和/或(huò) Unicode 编码(mǎ)(udddd 记号)字符的文件。native2ascii 将含有(yǒu)其它字符编(biān)码的文件转换成(chéng)含 Latin-1 和(hé)/或 Unicode 编码字符的文件。若省略 outputfile,则使用标准输出设备输出(chū)。此外(wài),如果(guǒ)也省(shěng)略 inputfile,则使用标准输入设备(bèi)输入。
命令选项
-reverse 执(zhí)行相反的操作:将含 Latin-1 和(hé)/或 Unicode 编码字符的文件转换成含本地编码字(zì)符的文(wén)件。
-encoding【encoding_name】 指定转换过程使(shǐ)用(yòng)的编码名称。缺省的编码从(cóng)系(xì)统属(shǔ)性 file.encoding 中得到。
appletviewer
功能说(shuō)明(míng):
Java applet 浏(liú)览器。appletviewer 命令可在脱离万维网(wǎng)浏(liú)览器环境的情(qíng)况下(xià)运行 applet。
语法:
appletviewer 【 threads flag 】 【 命令(lìng)选项 】 urls ...
补充说(shuō)明:
appletviewer 命(mìng)令连接到 url 所指向的文档或资源上,并在其自身(shēn)的窗口中显示文档引用的每个 applet。注(zhù)意:如果 url 所指向的文(wén)档不引用(yòng)任何带(dài)有 OBJECT、EMBED 或 APPLET 标记的(de) applet,那(nà)么(me) appletviewer 就不做任何事情。
命(mìng)令选(xuǎn)项
-debug 在 Java 调试器 jdb 中启动 appletviewer,使(shǐ)您可以调试文档中的 applet。
-encoding【编码名称(chēng)】 指定输入 HTML 文件的编码名称。
-J【javaoption】 将 javaoption 字符串作为单个参数传给运行 appletviewer 的(de) Java 解释器(qì)。参数不能含有(yǒu)空格。由多重参(cān)数(shù)组成的字(zì)符(fú)串,其中的每个参数都必(bì)须以前缀(zhuì) -J 开头,该前缀以(yǐ)后将(jiāng)被除去。这在(zài)调整编译器的执行环境或(huò)内存(cún)使用时(shí)将(jiāng)很有(yǒu)用。
extcheck
功能说明:
extcheck 检(jiǎn)测目标(biāo) jar 文件与(yǔ)当前安(ān)装(zhuāng)方(fāng)式扩展 jar 文件间的版本冲突。
语法(fǎ):
extcheck 【 -verbose 】 targetfile.jar
补充说明:
extcheck 实(shí)用(yòng)程序检查(chá)指定 Jar 文件的标题和版本与 JDK TM 软件中所安装的(de)扩展是否有(yǒu)冲突(tū)。在安装某(mǒu)个扩展(zhǎn)前,可以用该(gāi)实用(yòng)程序查看是否已安装了该(gāi)扩展的相同版本或更高的版本。
extcheck 实用程序将 targetfile.jar 文件清单(dān)的(de) specification-title 和 specification-version 头与当前安装在扩展目录下所有 Jar 文件的(de)相对应的头进行比较(缺省(shěng)扩展目录为 jre/lib/ext)。extcheck 实用程序比较版本号的方式与 java.lang.Package.isCompatibleWith 方法相同(tóng)。若未检测(cè)到冲突,则返回代码为 0。如果(guǒ)扩展(zhǎn)目(mù)录中(zhōng)任何一个 jar 文件的清单有相同的 specification-title 和相(xiàng)同的或更新的 specification-version 号,则返回(huí)非零(líng)错误代码。如果 targetfile.jar 的(de)清单中没有 specification-title 或(huò) specification-version 属性,则同样返(fǎn)回(huí)非零错误代码。
命令(lìng)选项
-verbose 对扩(kuò)展目录(lù)中(zhōng)的 Jar 文(wén)件进(jìn)行检查时,列出文(wén)件。此外,还报告目标 jar 文件的清(qīng)单属性及所有冲突的 jar 文(wén)件。
jar
功能(néng)说(shuō)明:
Java归档工(gōng)具
语(yǔ)法:
jar 【 命令(lìng)选项 】 【manifest】 destination input-file 【input-files】
补充说明:
jar工具是个java应(yīng)用程序,可将多个文(wén)件(jiàn)合并为单个JAR归档文件。jar是个多(duō)用(yòng)途的存(cún)档及压缩工具,它(tā)基于ZIP和ZLIB压缩格式。然而,设计jar的主要目的是便于将java applet或(huò)应(yīng)用程序打包成单个归档(dàng)文件。将applet或应(yīng)用程序的组件(.class 文件、图像和声音)合并成单个归档文件(jiàn)时,可(kě)以用java代理(lǐ)(如浏(liú)览器)在一次HTTP事务(wù)处理过程中对它们进行下载,而不是对每个(gè)组件都要求一个新连接(jiē)。这大大缩短了下载时间。jar还能(néng)压缩文件(jiàn),从而进一步提高了(le)下载速度。此外,它允(yǔn)许(xǔ)applet的作(zuò)者(zhě)对(duì)文件(jiàn)中的各个项进行签(qiān)名,因而可认(rèn)证其来(lái)源。jar工具的语法基本上与(yǔ)tar命令(lìng)的语法(fǎ)相同。
命(mìng)令选项
-c 在标准输出上创建新归档或空(kōng)归档。
-t 在(zài)标准输出上列出内容(róng)表。
-x【file】 从(cóng)标(biāo)准输入提(tí)取所(suǒ)有文(wén)件,或只(zhī)提取指定的文件。如(rú)果省略了file,则提取(qǔ)所(suǒ)有文件;否则只提取指定文件。
-f 第二(èr)个(gè)参数指定要(yào)处理的jar文件。在-c(创建)情形中,第二(èr)个参数指(zhǐ)的是要创建的jar文件的名称(chēng)(不是(shì)在(zài)标准输出上)。在(zài)-t(表(biǎo)(或-x(抽取)这两种情形中,第(dì)二个(gè)参(cān)数指定要(yào)列出或抽取的jar文(wén)件。
-v 在标准错误(wù)输出(chū)设备(bèi)上生成长格式的输出结果。
-m 包括指定(dìng)的现有清(qīng)单文(wén)件中的(de)清单信(xìn)息。用法举例:“jar cmf myManifestFile myJarFile *.class”
-0 只储存,不进行 ZIP 压缩。
-M 不创建项目的清(qīng)单文(wén)件。
-u 通过添加文件或(huò)更改(gǎi)清单来更新现有的 JAR 文件。例如(rú):“jar -uf foo.jar foo.class”将文件 foo.class 添(tiān)加到现有的JAR文件foo.jar中,而“jar umf manifest foo.jar”则用manifest中的信息更新foo.jar的清(qīng)单。
-C 在执行 jar 命令期间更(gèng)改目录。例如:“jar -uf foo.jar -C classes *”将classes目(mù)录内的所有(yǒu)文件(jiàn)加到foo.jar中,但不添(tiān)加类目录本(běn)身。
程(chéng)序示例
1:将(jiāng)当前目录下所有(yǒu)CLASS文件打(dǎ)包成新的JAR文件:
jar cf file.jar *.class
2:显示一个JAR文件中(zhōng)的文件(jiàn)列(liè)表
jar tf file.jar
3:将(jiāng)当前目录下(xià)的所有文件增加到一个已经存在的(de)JAR文(wén)件中
jar cvf file.jar *
javadoc
功能(néng)说明
Java API文(wén)档生成器从(cóng)Java源文(wén)件生成API文档HTML页。
语法:
javadoc 【 命令选项 】 【 包名(míng) 】 【 源文件(jiàn)名 】 【 @files 】
其中【 包名 】为用空格(gé)分隔的一系列(liè)包的名字(zì),包(bāo)名不允(yǔn)许使用(yòng)通(tōng)配(pèi)符,如(*)。【 源文件名 】为用(yòng)空格分隔的一(yī)系列的源文件名,源文(wén)件名可包(bāo)括路(lù)径和通配符,如(*)。【 @files 】是以任(rèn)何(hé)次序包含包名和源文件的(de)一个或多(duō)个(gè)文件。
补充说(shuō)明
Javadoc解析(xī)Java源(yuán)文件(jiàn)中的声明和文档注释,并产生相应的HTML页缺(quē)省),描(miáo)述公有类、保护类(lèi)、内部类、接口、构造函数、方法和域。
在(zài)实现时,Javadoc要求且依赖于java编译(yì)器完成其工(gōng)作(zuò)。Javadoc调用部分javac编译声明部分,忽(hū)略成(chéng)员实现。它建立类的内容丰富的内部表示,包括类层次和“使用”关系(xì),然后从中生(shēng)成HTML。Javadoc还从源代码的(de)文档注释中获得(dé)用户提(tí)供的文档。
当Javadoc建立其内部(bù)文档结构(gòu)时(shí),它(tā)将加载所有(yǒu)引(yǐn)用的(de)类。由于这一点,Javadoc必(bì)须能查找到所有引用的类,包(bāo)括引导类(lèi)、扩(kuò)展类和(hé)用户类(lèi)。
命令选项(xiàng)
-overview i>path/filename 指(zhǐ)定javadoc应该从path/filename所(suǒ)指定的(de)“源”文件中获取概述文档,并将(jiāng)它放到概(gài)述页中(overview-summary.html)。其中path/filename 是相对于-sourcepath的相对路径名。
-public 只显示公有类及成(chéng)员。
-protected 只显示(shì)受(shòu)保(bǎo)护的和公有的类(lèi)及成员。这是缺省状态。
-package 只(zhī)显(xiǎn)示包、受(shòu)保护的和公(gōng)有的类及成员。
-private 显示(shì)所有类和(hé)成员。
-help 显示联机帮(bāng)助(zhù),它(tā)将列出(chū)这些(xiē)javadoc和doclet命令(lìng)行选项。
-doclet class 指(zhǐ)定启动用(yòng)于(yú)生成文档的(de)docle 的类(lèi)文件。该doclet定义了输出的内容和格式。如果未使用-doclet选项,则javadoc使用(yòng)标准doclet生成缺省(shěng)HTML格式。该(gāi)类必(bì)须包含start(Root)法(fǎ)。该(gāi)启(qǐ)动类的路径(jìng)由 -docletpath选项(xiàng)定义。
-docletpath classpathlist 指定(dìng)doclet类文件的(de)路径,该类文(wén)件(jiàn)用-doclet选项指定(dìng)。如果doclet已位于搜索路径中,则没有必要使用该选项。
-1.1 生成具有用Javadoc 1.1生成的(de)文档的外观和(hé)功能的文档(dàng)。也就(jiù)是说,页的背景(jǐng)为(wéi)灰(huī)色,用图(tú)像做页(yè)眉,使(shǐ)用bullet列表而(ér)不是表格,具有单层目的目录结构,不包含(hán)继承 API,不(bú)使?*** TML框(kuàng)架,并且不支(zhī)持内部(bù)类。该选项还自动将索引分割成每个字母一个文件。如果想要(yào)这(zhè)种外观,则该选项比javadoc 1.1优越之处等于修正了一些错误。
-sourcepath sourcepathlist
当将包名(míng)传(chuán)递到javadoc命令中时,指(zhǐ)定定位源(yuán)文件(.java)的(de)搜索路径。注意(yì)只有当用 javadoc命令指(zhǐ)定包名时(shí)才能(néng)使用sourcepath选项 -- 它(tā)将(jiāng)不会查(chá)找传递到javadoc命令中(zhōng)的(de).java文件。如果(guǒ)省略(luè)-sourcepath,则javadoc使(shǐ)用类路径查(chá)找源文件。
-classpath classpathlist 指定javadoc将在其(qí)中查找引用类的路径 -- 引用类是指带文档的(de)类加(jiā)上(shàng)它们引(yǐn)用的任何类。Javadoc将(jiāng)搜索指定(dìng)路径(jìng)的所有子目录(lù)。classpathlist可以包括(kuò)多个路径,彼此用逗号分隔。
-bootclasspath classpathlist 指(zhǐ)定自(zì)举类(lèi)所在路径。它们名义(yì)上是Java平台类。这个(gè)bootclasspath是Javadoc将用(yòng)来(lái)查找(zhǎo)源文件和(hé)类(lèi)文(wén)件的搜索路径的一部分。在 classpathlist中用冒号(:)分(fèn)隔目(mù)录。
-extdirs dirlist 指定扩展(zhǎn)类所在的(de)目(mù)录。它们是任何使(shǐ)用Java扩(kuò)展(zhǎn)机(jī)制(zhì)的类。这个 extdirs是Javadoc将用(yòng)来查找源文件和(hé)在文件的搜索(suǒ)路径的一部分。在(zài)dirlist中用冒号(hào)(:)分隔目录(lù)。
-verbose 在javadoc运行(háng)时提(tí)供更(gèng)详细的信息。不使用verbose选项时,将显示加载源文件、生成文档(每个源(yuán)文件一条信息)和排序的信息。verbose选项导致打印(yìn)额外的信息,指定(dìng)解析每个java源文件的毫秒数。
-locale language_country_variant 指定(dìng)javadoc在生成文档时使(shǐ)用的环境。
-encoding name 指定源文件(jiàn)编码(mǎ)名,例如EUCJIS/SJIS。如(rú)果未(wèi)指定该选项,则(zé)使用平(píng)台(tái)缺省转换器。
-J【flag】 将(jiāng)flag直接(jiē)传递(dì)给(gěi)运行javadoc的运行时系统java。注意在J和flag之间不能有空格。
标(biāo)准 Doclet 提供的(de)选项
-d directory 指定javadoc保存生成的HTML件的目的(de)目录。省略该选项将导(dǎo)致把文件保存到当前目录中。其(qí)中directory可以是绝对路径(jìng)或相对当前工作(zuò)目录的相对路径。
-use 对每个带(dài)文档类和包(bāo)包括一个“用法”页。该(gāi)页描(miáo)述使用(yòng)给定类或包的任何 API 的包、类、方法、构(gòu)造函数和域。对于给(gěi)定类(lèi) C,使用类 C 的任(rèn)何东西(xī)将包(bāo)括 C 的子(zǐ)类、声明(míng)为 C 的域、返(fǎn)回 C 的方法以及具有 C 类型参数的方(fāng)法和构(gòu)造(zào)函数。
-version 在生成文档中包括 @version 文本(běn)。缺省地(dì)将省略该文本。
-author 在生(shēng)成文档中包括 @author 文本。
-splitindex 将索引(yǐn)文件(jiàn)按字母(mǔ)分割成多(duō)个文件,每个字(zì)母一个文件,再加上一个(gè)包含所(suǒ)有(yǒu)以非字母字(zì)符(fú)开头(tóu)的索引(yǐn)项(xiàng)的文件。
-windowtitle【title】 指定放入 HTML
四(sì)、JDK安(ān)装手(shǒu)册(转载http://www.funbsd.net)
·Linux
SUN的java网站提供windows,linux,solaris三(sān)个(gè)平台编译好的jdk包,下载解压(yā)即可使(shǐ)用。
网址(zhǐ):http://java.sun.com/downloads/
cd /usr/local
sh /home/pkg/jdk-1_5_0_01-linux-i586.bin
mv j2sdk1.5.0_01 java
chown -R root:root java
chmod -R 755 java
设置环境变量(liàng)(/etc/profile):
export JAVA_HOME=/usr/local/java
export CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
使环(huán)境变(biàn)量生效,并进行测试:
source /etc/profile
java -version
·FreeBSD
这个编译好的jdk包(bāo)需要(yào)FreeBSD4.x兼容包,你(nǐ)也可(kě)以自己从ports安(ān)装jdk:
网址:http://www.freebsd.org/java/
mount /cdrom
cd /cdrom/compat4x/
./install.sh
pkg_add -r ftp://ftp.freebsdchina.org/pub/china_ports/jdk-1.4.2p7.tbz
mv /usr/local/jdk1.4.2 /usr/local/java
设(shè)置环(huán)境变量(~/.cshrc):
setenv JAVA_HOME /usr/local/java
setenv CLASSPATH $JAVA_HOME/lib:$JAVA_HOME/jre/lib
setenv PATH $JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
使环境变量生效,并进行测试:
source ~/.cshrc
java -version
