package1.java文件内容如下:package myPackage;public class Package1
{
  public String name;
  public int age;
  
  public Package1(String name,int age)
  {
     this.name=name;
     this.age=age;
  }
  public void show()
  {
     System.out.println(name);
     System.out.println(age);
  }
  public static void main(String[] args)
  {
     Package1 Package1[]=new Package1[3];
     Package1[0]=new Package1("KUnkun",5);
     Package1[1]=new Package1("Lili",14);
     Package1[2]=new Package1("yiyi",23);
     for(int i=0;i<3;i++)
     {
        Package1[i].show();
     }
  }
}Package1_import.java文件内容如下import myPackage.Package1;   public class Package1_import
{
   public static void main(String[] args)
   {
     Package1 L1=new Package1("sadfa",26);
     L1.show();
     
   }
}
以上是可以正常运行的。
过程是:
Package1.java采用javac -d . package1.java后自动生成目录myPackage,并在目录下生成Package1.class.
然后由Package1_import.java调用该类但将import myPackage.Package1; 
改为import myPackage.*;
编译Package1_import.java文件时,说在包中找不到该类,请问是什么原因?
注:文件夹中无其他类或文件

解决方案 »

  1.   

    你运行javac的目录是什么?重新设置一下环境变量 javac -cp xxxxx
      

  2.   

    可能是环境变量classpath的问题,编译时搜索classpath,在classpath中已经设置了“ .;”——当前目录
      

  3.   

    你不要把两个java文件同时放在一个目录下,把另外一个java文件放进myPackage包里面就好了,至于原因,我也请教高手回答,呵呵,我说不出来为什么会这样。
      

  4.   

    我运行JAVA文件的路径是
    e:\java\
    Package1.java和Package1_import.java都在该目录下
    所以生成目录myPackage1后,Package1.class就在该目录下了,即e:\java\myPackage1classpath我的设置当初就是".",这个我也一直比较模糊请教下大家如果是classpath,应该如何更改该目录呢?谢谢
      

  5.   

    很奇怪么
    那就是说import myPackage.Package1不是包含在 import myPackage.*里面的
    要不然应该没问题啊 
      

  6.   

    类确实在里面,否则import myPackage.Package1;就肯定引用不了我郁闷的就是改为import myPackage.*;
    就说找不到该类了,我的文件夹myPackage里面可就那一个类而已
     
      

  7.   

    你用import myPackage.*;  当前文件夹下必须没有Package1.java文件才行,打包过后编译器从当前目录查找引用的类文件,当看到Package1.java误以为是Package1.class因此而报错“确保该文件位于正确的类路径子目录中”。非要用.*就把类中引用的源文件删除或剪切到其他的目录中就可以编译通过了。
      

  8.   

    谢谢11楼,按你的方法运行成功了,就是将Package1.java放到其他
    只是有点不明白:我用import引用的明明是e:\java\myPackage目录下的文件
    而Package1.java是在e:\java当前目录下
    为什么它会从e:\java目录下开始找而不是e:\java\myPackage
      

  9.   

    需要设置一下类路径,也就是CLASSPATH用户自定义环境变量,因为解释器在查找类的时候是按照类路径中的路径查找的。
      

  10.   

    需要设置一下类路径,也就是CLASSPATH用户自定义环境变量,因为解释器在查找类的时候是按照类路径中的路径查找的。
      

  11.   

    我的CLASSPATH设置是“.”,那意思是不是说,使用解释器查找类是都是从当前目录下开始找