以我的理解:包应该是java类文件的一种组织方式,就像文件的目录路径一样。不同的包可以有相同名字的类,但可以在前面加上包名区分它们。许多公司自己开发的类文件一般放在以自己公司的ip地址为名称的包下,以保证类能被唯一正确的调用,如com.ibm.xxx.xxx包。其实说穿了,包就是一个名字前缀而已。
    你的问题是可能你的类路径设置不正确,应该加上一个“.”,如:"classpath=.;c:\jdk\;...",那么编译器在找类的时候就会在本目录下寻找,这样才能找到你说的Demo1类。

解决方案 »

  1.   

    朋友,你没什么事吧。我试了没有错,能正常编译。
    PACKAGE不是说要把Demo1.java和 Demo2.java都放在p1文件夹里PACKAGE指的是在编译后的。CLASS文件所放的地方,运行时它会到你的CLASSPATH或你写的PACKAGE中去找你的DEMO1。CLASS。所你你把编译后的。CLASS放到一起没问题
      

  2.   

    还有一点,你的p1目录要放在类路径下,编译器的寻找方式是先获得Demo2的包为p1,那么它就会找所有类路径下的Demo1类,如果类路径中有"."的话,他就会找所有类路径中所有含有p1的包下面的类,直到找到Demo1类。
      

  3.   

    刚才忘了一点,你的p1目录要放在类路径下,编译器的寻找方式是先获得Demo2的包为p1,那么它就会找所有类路径下的Demo1类,如果类路径中有"."的话,他就会找所有类路径中所有含有p1的包下面的类,直到找到Demo1类。
      

  4.   

    刚才忘了一点,你的p1目录要放在类路径下,编译器的寻找方式是先获得Demo2的包为p1,那么它就会找所有类路径下的Demo1类,如果类路径中有"."的话,他就会找所有类路径中所有含有p1的包下面的类,直到找到Demo1类。
      

  5.   


    我的CLASSPATH 是:.;d:\jdk14\lib\dt.jar;d:\jdk14\lib\tools.jar
     PATH           : .;D:\jdk14\bin
      

  6.   

    jinyan1981() 说程序运行正常,说明我的CLASSPATH有问题,大家给我看看。
    我还想问:Demo1.java ,Demo2.java是保存在PI文件夹里,还是保存到其他地方也行?
      

  7.   

    其实包就是相当于一个名字空间,好比文件系统的意思,这样同名的文件
    就可以放在不同的目录中,避免了同名的问题!
    所以你可以把包想象一个目录,
    用的例子说明,比如你编译demo1.java时,会在当前目录生成一个子目录
    p1,在该目录中有demo1.class文件,所以当你在和demo1.java相同的目录下
    编译demo2.java,由于你用到了demo1.class,所以你必须引用这个包,
    即import p1.*;
      

  8.   

    谢谢flylijian(飞入绝境)现场指导
      

  9.   

    package p1;
    public class Demo1
    {
    public int a;
      public void method()
      {
      
           System.out.println("demo1");
      }
    }我认为问题出在类的声明前没有加public修饰符,所以这个类不能被另一个包里的类引用。
      

  10.   

    TO :_No1_(天王盖地虎)问题解决了,不是PUBLIC的问题,是CLASSPATH的问题,谢谢!
      

  11.   

    编译通不过吗??
    这样编译:
    假设两个文件都在d:\
    D;\javac -d . Demo1.java
    D:\javac -d . Demo2.java这样运行:
    d:\java pl.Demo1
    d:\java pl.Demo2
      

  12.   

    说说怎么解决的?
    我也是初学者,开始我没有注意你用的是同一个包,所以建议你用public。后来就一直试着解决这个问题:)。
    我解决的办法是把main函数的类放到无名包里,然后调用p1包里的函数,这时p1包里被调用的类必须用public修饰。
    你说的用classpath能解决,我也简单试了一下,不行,希望你能指点一下,谢谢了。
      

  13.   

    To:zwp315(买卖公平) 
    开始我没有注意到你用了一个包,所以建议你用public。后来我就试着解决这个问题,发现把main函数放到无名包里,在main中调用p1包里的类就可以正常运行,当然这种情况下p1包里被调用的类的访问权限只能是public。
    你说的用classpath就能解决,我试过却不行。能不能指点一下?先谢谢了。