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