首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

14.3  PATH和CLASSPATH

本节讲解如何在Microsoft Windows、Solaris和Linux系统中使用PATH和CLASSPATH环境变量。关于当前信息,请参考Java开发工具(Java Development Kit,JDK)软件包包含的安装指导。

安装好软件之后,JDK目录将具有如图14-2所示的结构。bin目录包含编译器和启动器。

...

 

bin

 

lib

 

jdk1.6.0_version

 

图14-2  JDK目录结构

14.3.1  更新PATH变量(Microsoft Windows NT/2000/XP)

你可以正常运行Java应用程序,而不必设置PATH变量。也可以为了方便起见,选择性地设置它。

如果你希望从任何目录都能方便地运行可执行文件(javac.exe、java.exe、javadoc. exe等),而不必输入命令的完整路径,那么可以设置PATH变量。如果没有设置PATH变量,那么每次运行可执行文件时都需要指定它的完整路径,比如:

C:\Program Files\Java\jdk1.6.0\bin\javac MyClass.java

永久地设置PATH很有帮助,这使它在重新启动之后保持不变。为了永久地设置,需要把jdk1.6.0的bin目录的完整路径添加到PATH变量中。按照下面的说明设置PATH。

为了永久改变CLASSPATH变量,需要使用Control Panel中的System图标。确切的步骤因Windows版本的不同而不同。

PATH可以是以分号(;)分隔的一系列目录。Microsoft Windows从左到右按照顺序在PATH目录中搜索程序。在路径中只能同时有JDK的一个bin目录(第一个后面的那些会被忽略),所以如果已经有了一个bin目录,就可以更新这个特定项目。

14.3.2  更新PATH变量(Solaris和Linux)

你可以正常运行Java应用程序,而不必设置PATH变量。但是,如果你希望从任何目录都能运行可执行文件(javac、java、javadoc等),而不必输入命令的完整路径,就应该设置PATH变量。如果你没有设置PATH变量,那么每次运行可执行文件时都需要指定它的完整路径,比如:

% /usr/local/jdk1.6.0/bin/javac MyClass.java

为了查看是否正确地设置了路径,执行:

% java -version

如果找到的话这将输出java工具的版本。如果版本旧了或者出现错误java:Command not found,那么就是没有正确地设置路径。

为了永久地设置路径,可以在启动文件中设置路径。

对于C shell(csh),这样编辑启动文件(~/.cshrc):

set path=(/usr/local/jdk1.6.0/bin )

对于bash,这样编辑启动文件(~/.bashrc):

PATH=/usr/local/jdk1.6.0/bin:

export PATH

对于ksh,由环境变量ENV指定启动文件。这样设置路径:

PATH=/usr/local/jdk1.6.0/bin:

export PATH

对于sh,这样编辑设置文件(~/.profile):

PATH=/usr/local/jdk1.6.0/bin:

export PATH

然后,加载启动文件,并且通过再次使用java命令验证设置后的路径。

对于C shell(csh):

% source ~/.cshrc

% java -version

对于ksh、bash或者sh:

% . /.profile

% java -version

14.3.3  检查CLASSPATH变量(所有平台)

CLASSPATH变量是通知应用程序(包括JDK工具)在什么位置搜索用户类的一种方式。(JRE、JDK平台和扩展中的类应该通过其他途径来定义,比如引导类路径或者扩展目录。)

指定类路径的首选方式是使用-cp命令行开关。这允许分别为每个应用程序设置CLASSPATH,而不会影响其他应用程序。设置CLASSPATH可能比较需要技巧并且应该谨慎执行。

类路径的默认值为“.”,含义是只搜索当前目录。指定CLASSPATH变量或者-cp命令行开关会覆盖这个值。

在Microsoft Windows NT/2000/XP系统上,要检查是否设置了CLASSPATH,可以执行:

C:> echo %CLASSPATH%

在Solaris或者Linux系统上,可以执行:

% echo $CLASSPATH

如果没有设置CLASSPATH,就会出现CLASSPATH:Undefined variable错误(Solaris或者Linux系统),或者仅仅是%CLASSPATH%(Microsoft Windows NT/2000/XP系统)。

为了修改CLASSPATH,可以使用与修改PATH变量相同的方法。

类路径通配符允许在类路径中包含.jar文件的整个目录,不必单独地显式指定它们。关于更多信息,包括对类路径的介绍和如何清除CLASSPATH的详细讲解,请参阅docs/books/ tutorial/technotes/tools/windows/classpath.html。

问题和练习:平台环境

问题

一个程序员安装了包含在一个.jar文件中的新的库。为了从他的代码访问这个库,他将CLASSPATH环境变量设置为指向新的.jar文件。现在他发现试图启动简单的应用程序时出现了错误消息:

java Hello

Exception in thread "main"

   java.lang.NoClassDefFoundError: Hello

在这个例子中,Hello类被编译为.class文件存放在当前目录中,但是似乎java命令找不到它。错误出在哪里?

练习

编写一个应用程序PersistentEcho,它具有如下特性:

(1) 如果带命令行参数运行PersistentEcho,它会输出这些实参。它还把输出的字符串保存到一个属性,并且把这个属性保存到名为PersistentEcho.txt的文件。

(2) 如果不带命令行参数运行PersistentEcho,它就查找名为PERSISTENTECHO的环境变量。如果这个变量存在,PersistentEcho就输出它的值,并且按照处理命令行参数的方式保存这个值。

(3) 如果不带命令行参数运行PersistentEcho,并且没有定义PERSISTENTECHO环境变量,PersistentEcho就从PersistentEcho.txt获得属性值并且输出这个值。

答案

可以在以下位置找到“问题”和“练习”的答案:

tutorial/essential/environment/QandE/answers.html

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论