//class TestA
package Abc;public class TestA
{
    public void Pri()
    {
        System.out.println("TestA.Pri!!");
    }
}
//class TestBpackage Bb;   //放在包Bb中
import Abc.*; //可以用“*”导入Abc包中的类public class TestB
{
    public static void main(String[] args)
    {
        TestA ta=new TestA();
        ta.Pri();
        System.out.println("TestB.main!");
    }
    public void Pri()
    {
        System.out.println("TestB.Pri!!");
    }
}
很简单的代码,问题:如果不把TestB类放在一个自定义的包中,就会出现找不到TestA类的问题TestB.java:8: 无法访问 TestA
错误的类文件: .\TestA.java
文件不包含类 TestA
请删除该文件或确保该文件位于正确的类路径子目录中。
        TestA ta=new TestA();
        ^
1 错误但如果用import Abc.TestA;导入包的话就可以找到TestA类。但如果把TestB类放到一个自定义的包中,就可用“*”也就是import Abc.*;导入TestA类为什么默认的包不能用“*”导入类?

解决方案 »

  1.   

    import Abc.*; //可以用“*”导入Abc包中的类
    是没错的.不过,建议你以后不要把包名第一个字母用大写.
      

  2.   

    import Abc.*; //可以用“*”导入Abc包中的类
    修改为:
    import Abc.TestA;
    试试 
    或许你的Bb包下边有TestA
      

  3.   

    或许你的Bb包下边有TestA这句分析好
      

  4.   

    import Abc.*; //可以用“*”导入Abc包中的类 
    修改为: 
    import Abc.TestA; 
    试试 
      

  5.   


    这个当然可以,我不是说明了吗?还有一个问题,如果把TestA的源文件(.java)和TestA.class放到一起,就是Abc文件夹下面,用import Abc.*;引用就可以,编译就可以通过。。
      

  6.   

    你这不就说明问题了吗,通过import引用是引用.class 而不是.java
      

  7.   

    import Abc.*; //可以用“*”导入Abc包中的类 
    是没错的.不过,建议你以后不要把包名第一个字母用大写
    说得对啊
      

  8.   

    当然是引用的class文件,用eclipse自动编译,生成class文件
      

  9.   

    用Abc.TestA ta = new Abc.TestA();试试
    能运行的话,也就可能是在你的Bb包下边有TestA
      

  10.   


    问题我找到了
    如果在TestB同目录下,不管是有TestA.java还是有TestA.class。如果用abc.TestA.*引用的话,编译都通不过。大家可以测试一下,只是有些不明白,编译的时候TestA的源文件为什么对编译TestB还有这么大的影像?