包实际上就是一个文件夹,在程序中使用package进行定义,语法如下:
package 包名 ;<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

       例如:把以下的程序放在一个包中:
package demo.test ;

public class Demo33{

         public static void main(String args[]){

                   System.out.println("Hello World!!!") ;

         }

};

       如果要想成功的使用以上包中的类,则必须在编译的时候建立好相应的文件夹。
       可以使用如下的命令编译程序:
              javac -d . Demo33.java

              · -d:表示建立一个新的文件夹,文件夹的名字为package定义的名字
              · .”:表示在当前所在的目录中建立此文件夹

       如果现在已经成功的编译完之后,则在运行的时候就必须写上完整的包.类名称,如上面程序:

              java demo.test.Demo33,而不能说进入到目录中执行。

       那么也可以定义很多的包,例如,现在在test.demo1下建立一个Demo类,此Demo中有一个打印“Hello World”的方法。

package test.demo1 ;

class Demo{

         public void print(){

                   System.out.println("Hello World!!!") ;

         }

};

       那么此时,要对包进行编译。

       下面再建立一个Demo34.java的类,在此类中要使用Demo类。那么也就是说要在Demo34.java中导入所需要的包.类。假设:Demo34.java定义在test.demo2中。

package test.demo2 ;

// 导入所需要的包

import test.demo1.Demo ;   à 在此处导入了所需要的包

public class Demo34{

         public static void main(String args[]){

                   new Demo().print() ;

         }

};

       下面执行程序,观察效果:出现了以下错误:

Demo34.java:3: test.demo1.Demo test.demo1 中不是公共的;无法从外部软件包中对

其进行访问

import test.demo1.Demo ;

                  ^

Demo34.java:6: 找不到符号

符号: Demo

位置: test.demo2.Demo34

                new Demo().print() ;

                    ^

2 错误

注意:

       如果一个类想被包外的类所访问,则此类必须声明为public类型。

修改Demo.java,声明为public class

package test.demo1 ;

public class Demo{

         public void print(){

                   System.out.println("Hello World!!!") ;

         }

};

       那么一般情况下导包的语句要使用import,那么以上的代码是分别导入的。如果要导入一个包中的类很多,则可以直接使用“*”代替,那么实际上导入“*”与分别导入是一样的,因为,它只会导入自己所需要的类,不需要的类根本不会导入。

       但是一般情况下,如果做好了一系列的类,肯定要放在一个包中,而且不能把全部的*.class文件给用户,因为会很麻烦,所以在JAVA一般可以把所有的*.class打成*.jar的包,使用*.jar包就可以保存全部要使用的*.class文件了。

       建立Hello.java

package org.lxh.demo ;

public class Hello{

         public String sayHello(String name){

                   return " 你好, " + name ;

         }

};

       编译完成之后,使用JAR命令打包:

              jar -cvf my.jar org
                     · c:创建新的文件

                     · v”:显示详细的信息

                     · f”:指定文件的名子

                     · org:要打成*.jar的包名称

       建立测试类:
package demo ;

import org.lxh.demo.* ;

public class TestHello{

         public static void main(String args[]){

                   Hello h = new Hello() ;

                   System.out.println(h.sayHello(" 张三 ")) ;

         }

};

       打包编译出现了以下的错误:
TestHello.java:2: 软件包 org.lxh.demo 不存在

import org.lxh.demo.* ;

^

TestHello.java:5: 找不到符号

符号: Hello

位置: demo.TestHello

                Hello h = new Hello() ;

                ^

TestHello.java:5: 找不到符号

符号: Hello

位置: demo.TestHello

                Hello h = new Hello() ;

                              ^

3 错误

       虽然此时TestHellomy.jar在同一个文件夹之中,但是如果要想正确的使用*.jar的文件,则必须设置classpathset classpath=e:\testjava\my.jar;.