我先是自己封装了一个包package study;<程序省略>
然后再另一个程序中调用此包import study.*;编译无法通过,提示无法访问Arrays2.
Arrays2是封装在study包里的一个public类,未定义其构造方法。但是如果我把调用包语句改成:
import study.Arrays2;
就能够顺利通过编译并运行成功。想询问下造成这种情况是什么原因?

解决方案 »

  1.   

    是不是你别的地方还有Array2类啊?
    只能这么理解了。
      

  2.   

    没错,应该是你的类中写了Array2类吧
      

  3.   

    用该类的get/set方法获取不行?
      

  4.   


    打开study文件夹里,里面只有一个Arrays2.class 文件。会不会和classpath设置有关系?
      

  5.   

    classpath检查无误。
    封包用的语句是:package study;
      

  6.   

    没有问题吧?现在还有问题吗?如import java.unitl.*;就是导入其包下的类啊!都可以的啊!
      

  7.   


    是的,import java.util.*;没有任何问题,而且可以直接调用里面的类,例如Arrays
      

  8.   

    import study.*; 默认导入study包下的所有类,但是并不实例化。
    import study.Arrays2; 这样明确导入Arrays2类,会自动进行实例化,自然会自动加上构造方法。所有你使用第二种方法可以编译成功。
      

  9.   


    你的意思是说,若我想用import study.*; 进行导入,必须在study文件夹内含有Arrays2.java文件?
      

  10.   

    首先你的study包下必须有Array2类才能引用,其次,你可以用全包名使用这个类sutdy.Array2来使用。
      

  11.   


    不是的。被导入的Java类只需要class文件,不需要Java文件的。但是你的程序这个问题确实很难理解。我建议你重做一遍:在study目录下面定义Array2.java文件,然后编译,通过后,删掉Array2.java文件,保留Array2.class文件。看看效果如何。