菜鸟到此一游,learning…………

解决方案 »

  1.   

    可能是同名的类冲突了,java不允许classpath中有两个同名的类,这会导致NoClassFoundException
      

  2.   

    楼上真解,Java都是通过Classpath来寻找包的,当然也不允许Classpath中存在相同的类
      

  3.   

    如果你这样:import aaa.bbb.ccc;
    import aaa.ddd.ccc;那么在程序中,就不能出现类似private ccc nn=new ccc();而需要private aaa.bbb.ccc nn ……
      

  4.   

    不过如果你这样用private aaa.bbb.ccc nn ……那么一开始的时候就不用import aaa.bbb.ccc了
      

  5.   

    可能是同名的类冲突了,java不允许classpath中有两个同名的类.
    楼上真解,Java都是通过Classpath来寻找包的,当然也不允许Classpath中存在相同的类 Joeblackyang(做IT做得身心疲惫) 、 chiliast(钓鱼太郎) 请不要误导别人了。唉,你了解java中使用classpath的机制么?classpath中设置的是类所在路径(目录)或者是类所在的jar包(其实也相当于是一个目录).所以你怎么在classpath中放具体的class?!
    还有通过classpath,的确可能可以找到多个相同的类,但是java的加载机制是先加载放在classpath中较前位置的目录(或jar包)中的类,但也决不会产生什么冲突。
    而且class的加载和import是完全无关的。import只是方便你在引用类时可以少些包名而已。
      

  6.   

    我又看了看,是这样子的。(可能我没有说清楚)1、有两个不同物理位置的包,名字是一样的。其中类名一样也是可以的。是可以没有问题的使用的。(类会按CLASSPATH中先后顺序用前面的一个)2、我上次提出的问题在于:别的包可以同名,但是java.io这个包不可以再来一个同名的。这是JVM的安全手段。否则会有:Exception in thread "main" java.lang.SecurityException: Prohibited package name: java.io3、我想建一个类替代系统的FILE类,发现FileSystem只能在本包中使用(protected),而且只能在java.io包中使用(safetylink),于是我想到再建一个IO包,没有想到IO包只能有一个。呵呵。
      

  7.   

    我觉得不管是不是由于java.io不可以同名,都没有必要建两个同名的包。另起一个名称,是不会有任何不妥的
      

  8.   

    namowen(寒号不已) ,
    我使用别人的系统,当然使用他提供的java.io.File(系统设置我不能改),这个类被他重写了。而我不想使用他的这个被重写的java.io.File.于是我就想写一个File,放在我自己的目录下,我自己使用。写File类需要FileSystem,这是一个protected类,只能在自己包中使用,于是,我要把FileSystem也重写一下(COPY到我自己的目录下),可是,FileSysytem用了JNI(Native Interface),这里面决定它只能在名为java.io的包中被使用,于是我要把自己的目录(新建一个包)也命名为java.io。
    问题就来了,java.io包只能有一个。
    这就是问题的由来。
      

  9.   

    你不用他的那个java.io.File,是不是可以用自己写的那个把他的替换掉?或者你不要把这个类叫File
      

  10.   

    出现这种情况时,你只能引用完整路径,就不会产生这种问题,想JAVA SDK中
    java.util包中有一个Timer类,而javax.swing包中也有一个Timer类,当你在一个程序中同时导入这两个包时,你要使用其中一个Timer类建立对象就必须引用全路径建立对象,
    如:javax.swing.Timer timers=new javax.swing.Timer();
    才不会导致程序出错。
      

  11.   

    haode(好的) ,
    不是这个类叫什么名字的问题,而是我如果要写File类的操作,就要用FileSystem中的Native Interface,面这个JNI只能在名为java.io包中被使用.
    java.io包只能有一个。
      

  12.   

    引用具体的路径,即写全部的名称来用。
    同意:haode(好的)