快速业务通道

管理Java类路径(UNIX和Mac OS X) - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-21
那么我会这样引用它们:

$ javac -d bin -sourcepath src   -classpath ../project1/classes:../project2/classes   src/com/elharo/gui/MainFrame.java

到目前为止,我都一直假设程序完全独立并且没有使用任何单独的编译后的第三方库。如果需要使用第三方库,还必须将它们也添加到类路径。库通常是 JAR 文件的格式,比如 junit.jar 或 icu4j.jar。在本例中,需要向类路径添加的只是 JAR 文件本身,而不是包含 JAR 文件的目录(从实质上讲,JAR 文件可以充当包含编译后的 .class 文件的一种目录)。例如,如下命令会向类路径添加三项内容:/Users/elharo/classes 目录,当前工作目录里的 icu4j.jar 文件和 /Users/elharo/lib 下的 junit.jar 文件:

$ javac -d bin -sourcepath src   -classpath /Users/elharo/classes:icu4j.jar:/Users/elharo/lib/junit.jar   src/com/elharo/gui/MainFrame.java

JAR 文件仅用于 .class 文件和其类路径,不用于 .java 文件及其源路径。

管理Java类路径(UNIX和Mac OS X)(5)

时间:2011-01-04 IBM Elliotte Harold

运行程序

现在您已经成功地编译了程序,可以运行它了。运行与编译相似但更为简单一些。当运行程序时,只需指定两项内容:

类路径。

包含 main() 方法的类的完全限定包名。

无需指定源路径。

通常这里的类路径与编译程序所使用的类路径相同,只是多了一个放置编译后的输出的目录。例如,如果编译命令如下所示:

$ javac -d bin -sourcepath src   -classpath /Users/elharo/classes:/Users/elharo/lib/junit.jar   src/com/elharo/gui/MainFrame.java

并且 main() 方法在 com.elharo.gui.Mainframe.java 类内,就可以像这样运行此程序:

$ java   -classpath /Users/elharo/classes:/Users/elharo/lib/junit.jar   com.elharo.gui.MainFrame

请务必注意命令行的最后一项是类名。它不是一个文件名,也不是 .java 或 .class。该类必须能够在类路径的某处找到。

可能存在类的其他地方

我强烈建议您在编译和运行时总是显式地指定类路径。也可以将文件放到其他地方,以便它们可以被添加到类路径中,并被 javac 编译器和 java 解释器找到。这种做法会节省一些键入操作,但当(注意不是如果)您无意间将一个旧版本的类放到类路径中时,这却会耗费大量的调试时间。

在本节,将展示类常常隐匿其中的几个地点,这些类很可能会出乎意料地冒到类路径中并导致问题的出现。在不受您控制的机器上(比如服务器),这更为多见。

当前的工作目录

编译器总是将当前工作目录 (.) 添加到类路径,而不管您是否曾显式地要求这样做。您很容易忘记在和您所在的目录相同的目录中有和没有的内容。因此,请尽量避免将任何类或层次结构放入 project 或 home 目录。相反地,应该将 .java 文件和 .class 文件分别放入 src 目录和 bin 目录。

CLASSPATH

过一会,您就会发现向类路径手工添加 bin 目录和 JAR 归档文件太过繁琐。这时您可能会想要使用 CLASSPATH 环境变量。可以只向 CLASSPATH 环境变量添加一次目录和 JAR 归档文件,之后就不需要在每次运行 javac 或 java 时都要再键入这些路径。

请务必抵制这种诱惑。这样做,一旦加载了错误的类或错误版本的类,就会出问题。而且意外加载错误的类所带来的调试时间常常会百倍于省下的那点键入时间。要避免输入并自动处理类路径有更好的方法。

jre/lib/ext

jre/lib/ext 目录中的 JAR 归档文件会被添加到通过虚拟机运行的所有应用程序的类路径。这看起来很方便,实际上它与向 CLASSPATH 环境变量添加目录一样,存在长远的潜在问题。您迟早(通常很快)会在您想都想不到的地方加载类的一个错误版本的类并会为此付出大量的调试时间。

部署一个服

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号