快速业务通道

管理Java类路径(Windows) - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-21
的各个部分,确保它们拼写正确。在本例中,错误消息显示 math 的第二和第三个字母颠倒了。

如果没有发现拼写错误,请检查该文件是否处于它应该出现的位置,方法是按如下所示发出一个 dir 命令:

C:\project\src> dir src\com\example\math ls: src/com/example/math: No such file or directory

出现问题的原因通常是因为路径拼写错误,但也可能是由于当前的目录不对。在本例中,需要检查当前的工作目录是不是 project 目录。检查命令行上 C:和 >之间的文本,以确认当前目录是否是预期的目录。在本例中,当前目录为 C:\project\src,而预期的目录却是 C:\project。

管理Java类路径(Windows)(3)

时间:2011-01-04 IBM Elliotte Harold

输出到何处?

假设没有出现任何语法错误,javac 将编译后的 .class 文件放到与之对应的.java 文件所在的相同目录内。这并不是您所想要的结果。将 .class 和 .java 文件混在一起常常会使清理编译后的文件十分困难,因为很可能会意外删除本应保留的 .java 文件。这常会使清理构建十分困难,而且还会导致版本问题。发布一个二进制时,只对编译后的 .class 文件进行归档也会十分困难。因此,需要告知编译器将编译后的输出放到一个完全不同的目录内。-d 开关用来指定输出目录(通常称为 bin、build 或 class):

C:\project> javac -d bin src\com\elharo\math\Fraction.java

这时的输出将如图 3 所示。请注意 javac 已经创建了完整的com\elharo\math目录层次结构。不需要手动建立。

图 3. 并行源和编译后的层次结构

管理Java类路径(Windows) - 编程入门网

源路径

源路径 就是 Java 在其中寻找源文件的那个目录。具体到本例,就是 src 目录。该目录必须包含源文件的层次结构,这些源文件可以被放到它们自己的目录中。因此它不是 com 目录也不是src\com\elharo\math目录。

很多项目都使用不止一个类和包。它们通过导入语句和完整的包限定类名连接起来。例如,假设您在 com.elharo.gui 包中创建了 MainFrame 类,如清单 1 所示:

清单 1. 一个包中的类可以导入另一个包中的类

package com.elharo.gui; import com.elharo.math.*; public class MainFrame {   public static void main(String[] args) {    Fraction f = new Fraction();    // ...   } }

该类使用的是与 MainFrame 类所在的包不同的包中的 com.elharo.math.Fraction 类。源设置现在应该如图 4 所示(我将编译后的输出从之前的步骤中删除了。但这没有关系,因为我总是能重新编译它)。

图 4. 几个包的源结构

管理Java类路径(Windows) - 编程入门网

管理Java类路径(Windows)(4)

时间:2011-01-04 IBM Elliotte Harold

现在来看一下试着像以前一样编译 MainFrame.java 会出现什么情况。

清单 2. 编译 MainFrame.java

C:\project> javac -d bin src\com\elharo\gui\MainFrame.java
 src\com\elharo\gui\MainFrame.java:3: package com.elharo.math does not exist
 import com.elharo.math.*;
 ^
 src\com\elharo\gui\MainFrame.java:7: cannot find symbol
 symbol  : class Fraction
 location: class com.elharo.gui.MainFrame
  private Fraction f = new Fraction();
          ^
 src\com\elharo\gui\MainFrame.java:7: cannot find symbol
 symbol  : class Fraction
 location: class com.elharo.gui.MainFrame
  private Fraction f = new Fraction();
                           ^
 3 errors

出现清单 2 中的错误的原因是,虽然 javac 知道到何处可以找到 MainFrame.java,但它却并不知道到何处可以找到 Fraction.java(您可能觉得它应该具备足够的智能来识别匹配的层次结构,但事实并非如此)。为了给它提供一些线索,必须指定源路径。用源路径指定编译器

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号