JAVA工程结构 && CMD使用javac提示非有效命令怎么办

来源:互联网 发布:淘宝优惠券设置 编辑:程序博客网 时间:2024/04/30 10:52

      由于大家对package的使用存在太多困惑,我在这里将自己对于package的使用的领悟进行一点总结:package中所存放的所有文件,一般就分这三种:1,java程序源文件,扩展名为.java。2,编译好的java类文件,扩展名为.class。3,其他任何文件,也称为resource.例如图片文件,xml文件,mp3文件,avi文件,文本文件……
(1)package是什么
  package好比java用来组织文件的一种虚拟文件系统。package把源代码.java文件,.class文件和其他文件有条理的进行一个组织,以供java来使用。它有一个根"/",然后从根开始有目录和文件,目录中也还有文件和目录。
(2)package怎么实现的呢?
      一旦源代码自己声明了在哪个package路径之下,就是那句程序开头的"package xx.xx.xx"。有人问,为什么要有这个信息,直接放目录结构里不就好了么?是啊,直接放目录中确实可以找到.class和.java,但是如果我要输出这个.class是属于哪个package的,该怎么办?所以我们需要在.class里面留一个package的信息。
      .java文件是一个独立的编译单元,类似c++里面的cpp文件,但是它不需要.h文件,只要.java就足够了,一个.java文件里面可以包含一个public的类,若干package类(package类特征是没有任何访问控制修饰),还有内隐类的话,则还可以包含若干protected和private的类。每个类,都会在编译的时候生成一个独立的.class文件,所以.java和.class不是一对一,而是一对多的关系,只不过.java和public的类是一对一的。所有这些.class,都由这个.java开头的package语句来确定自己在package中的位置。
      package xx.bb.aa;说明这个.java编译单元中的所有类都放到xx.bb.aa这个package里面。而对应的,必须把这个.java文件放在xx目录下bb目录下的aa目录里面。如果一个.java文件没有任何package语句,那么这个.java里面的所有类都在package的"/"下面,也称之为default package。可以看出你一般从任何java教科书上写的第一个hello world程序的那个类是在defaultpackage里面的。有了package语句,情况就复杂一点了。这个编译单元.java必须放在package名对应的目录之下。而生成的class文件也要放在对应的目录结构之下才能正常运作。例如:
    /* A.java */
  package aaa.bbb.ccc;
  public class A{
  B b=new B();
  }
  /* B.java*/
  package aaa.bbb.ccc;
  public class B{}
编译时候怎么填参数呢?我根据package+文件名的格式来写,javac aaa.bbb.ccc.A.java。可惜不工作。非要使用合法的路径名才行:javac aaa/bbb/ccc/A.java,但是你发现生成的class丢失了目录结构,直接出现在当前目录下。最好的方式是:javac -d bin aaa/bbb/ccc/A.java。这样就会在当前目录的bin目录下看到完整的目录结构以及放置妥当的class文件。
(3)import干吗用的?
  import只是一种让你偷点懒少打字的方法,没有非用import不可的理由,用了import也不会起到类似c里面嵌入某文件内容的效果,它只是一种省事的办法。如果你不用import,你用ArrayList这个类,就需要写java.util.ArrayList。而用了import java.util.ArrayList;的话,以后代码中写ArrayList就可以了,省事。import可以使用通配符*,*代表某package下所有的class,不包括子目录。

=============================================================================================================== 

       一个JAVA工程,使用eclipse可以编译,但是在CMD中用命令行javac编译时提示“提示不是内部命令或外部命令....”,但是打入java -version还是可以提示版本的。此时,需要把JAVA的BIN路径,比如C:\Program Files (x86)\Java6_X64\bin\赋值给PATH环境变量。重启CMD就可以了。


 

参考原文:http://www.evget.com/zh-CN/Info/catalog/11033.html

原创粉丝点击