1.$$
package com.bruceeckel.simple;public class Vector
 {   public Vector()
      { System.out.println("com.bruceeckel.simple");
      }
                   
                   public static void main(String[] args)
       {System.out.println("Hello !");
        }
     }
2.$$
package com.bruceeckel.simple;public class List{
    public List()
       {System.out.println("com.bruceeckel.simple.List"); }
       public static void main(String[] args)
       {System.out.println("Hello !");
        }
      }
3.$$
import com.bruceeckel.simple.*;public class Test
   { public static void main(String[] args)
         { //com.bruceeckel.simple.Vector v=new com.bruceeckel.simple.Vector();
           //com.bruceeckel.simple.List   l=new com.bruceeckel.simple.List();
           Vector v=new Vector();
          List   l=new List();
         }
            }classpath: .;C:\j2sdk1.4.2_03\lib
    
问题:为什么 3$$ 代码必须替换成注释掉的那一段才可以运行?
      难道我的import 失效了吗?
    

解决方案 »

  1.   

    把com.bruceeckel.simple.*;打包成jar文件,然后放在cp中,一切OK
      

  2.   

    不是失效,Vector.list都在java.util里有,冲突了,要明确写上哪个包里的
    指明是com.bruceeckel.simple还是java.util的
      

  3.   

    java.util.* , com.bruceeckel.simple.*;中都有Vector ,
    java.util.*,  java.awt.* , com.bruceeckel.simple.*;都有List,如果不指明,
    程序不知道用哪一个哦
      

  4.   

    to jihanzhong(逍遥) 我在3$$ 里面只有一句: import com.bruceeckel.simple.*;
                没有    : import java.util.*;
      这样也会出现冲突的吗?
      

  5.   

    小毛病而已。
    书上的程序你可以改一下的啊,比如说
    public class Vector  ========你可以改成public class myVector
    public class List    ========你改成public class myList
    然后就可以用你自己的myVector v=new myVector(); myList  l=new myList();
      

  6.   

    命名空间冲突,java.util中也有Vector和List
      

  7.   

    解决了。自己总结一下:
     
    状况:在%classpath%\下编译Vector.java,List.java, 得到的.class文件复制到\com\bruceeckel\simple\下;再编译Test.java出错。
    分析: 编译的时候是先在当前目录里找,再看classpath得,可能是当前目录有了将要调用的文件所以报错
    处理: 移动当前目录的相关文件至\com\bruceeckel\simple\ (包括.java文件),编译通过,问题解决。其实问题的答案在错误提示里有,我没仔细想,多谢各位,感谢用qq指点的兄弟,结了。
      

  8.   

    vector和list在java.util里都有
    java在启动后都是先通过classpath找到java的基础类
    也就是通过classpath找到vector和list的
    完整的类名称是java.util.vector 和 java.util.list在程序里你自己声明com.bruceeckel.simple.Vector v=new com.bruceeckel.simple.Vector();
    是可以的,程序调用你声明的vector
    但是不声明,程序就调用java.util.vector接分