多个包同名 菜鸟到此一游,learning………… 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可能是同名的类冲突了,java不允许classpath中有两个同名的类,这会导致NoClassFoundException 楼上真解,Java都是通过Classpath来寻找包的,当然也不允许Classpath中存在相同的类 如果你这样:import aaa.bbb.ccc;import aaa.ddd.ccc;那么在程序中,就不能出现类似private ccc nn=new ccc();而需要private aaa.bbb.ccc nn …… 不过如果你这样用private aaa.bbb.ccc nn ……那么一开始的时候就不用import aaa.bbb.ccc了 可能是同名的类冲突了,java不允许classpath中有两个同名的类.楼上真解,Java都是通过Classpath来寻找包的,当然也不允许Classpath中存在相同的类 Joeblackyang(做IT做得身心疲惫) 、 chiliast(钓鱼太郎) 请不要误导别人了。唉,你了解java中使用classpath的机制么?classpath中设置的是类所在路径(目录)或者是类所在的jar包(其实也相当于是一个目录).所以你怎么在classpath中放具体的class?!还有通过classpath,的确可能可以找到多个相同的类,但是java的加载机制是先加载放在classpath中较前位置的目录(或jar包)中的类,但也决不会产生什么冲突。而且class的加载和import是完全无关的。import只是方便你在引用类时可以少些包名而已。 我又看了看,是这样子的。(可能我没有说清楚)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包只能有一个。呵呵。 我觉得不管是不是由于java.io不可以同名,都没有必要建两个同名的包。另起一个名称,是不会有任何不妥的 namowen(寒号不已) ,我使用别人的系统,当然使用他提供的java.io.File(系统设置我不能改),这个类被他重写了。而我不想使用他的这个被重写的java.io.File.于是我就想写一个File,放在我自己的目录下,我自己使用。写File类需要FileSystem,这是一个protected类,只能在自己包中使用,于是,我要把FileSystem也重写一下(COPY到我自己的目录下),可是,FileSysytem用了JNI(Native Interface),这里面决定它只能在名为java.io的包中被使用,于是我要把自己的目录(新建一个包)也命名为java.io。问题就来了,java.io包只能有一个。这就是问题的由来。 你不用他的那个java.io.File,是不是可以用自己写的那个把他的替换掉?或者你不要把这个类叫File 出现这种情况时,你只能引用完整路径,就不会产生这种问题,想JAVA SDK中java.util包中有一个Timer类,而javax.swing包中也有一个Timer类,当你在一个程序中同时导入这两个包时,你要使用其中一个Timer类建立对象就必须引用全路径建立对象,如:javax.swing.Timer timers=new javax.swing.Timer();才不会导致程序出错。 haode(好的) ,不是这个类叫什么名字的问题,而是我如果要写File类的操作,就要用FileSystem中的Native Interface,面这个JNI只能在名为java.io包中被使用.java.io包只能有一个。 引用具体的路径,即写全部的名称来用。同意:haode(好的) 问一个IO问题。大侠赐教 关于链接数据库 关于线程里的run方法和图形界面问题????(高手请进) 跪求JAVA环境变量中的问题 关于多线程的问题 如何获得 日期中的月份 , 这个月份一定要是英文的 譬如:January... 请教大侠!关于用图片生成附加码的解决办法! 再问一个关于鼠标的问题! 关于mssqlserver 的jdbc driver使用的问题 如何配置jdk1.4在jbuilder6下!在线等待,立即送分 Java类库下栽 买本新书,感觉还不错..
import aaa.ddd.ccc;那么在程序中,就不能出现类似private ccc nn=new ccc();而需要private aaa.bbb.ccc nn ……
楼上真解,Java都是通过Classpath来寻找包的,当然也不允许Classpath中存在相同的类 Joeblackyang(做IT做得身心疲惫) 、 chiliast(钓鱼太郎) 请不要误导别人了。唉,你了解java中使用classpath的机制么?classpath中设置的是类所在路径(目录)或者是类所在的jar包(其实也相当于是一个目录).所以你怎么在classpath中放具体的class?!
还有通过classpath,的确可能可以找到多个相同的类,但是java的加载机制是先加载放在classpath中较前位置的目录(或jar包)中的类,但也决不会产生什么冲突。
而且class的加载和import是完全无关的。import只是方便你在引用类时可以少些包名而已。
我使用别人的系统,当然使用他提供的java.io.File(系统设置我不能改),这个类被他重写了。而我不想使用他的这个被重写的java.io.File.于是我就想写一个File,放在我自己的目录下,我自己使用。写File类需要FileSystem,这是一个protected类,只能在自己包中使用,于是,我要把FileSystem也重写一下(COPY到我自己的目录下),可是,FileSysytem用了JNI(Native Interface),这里面决定它只能在名为java.io的包中被使用,于是我要把自己的目录(新建一个包)也命名为java.io。
问题就来了,java.io包只能有一个。
这就是问题的由来。
java.util包中有一个Timer类,而javax.swing包中也有一个Timer类,当你在一个程序中同时导入这两个包时,你要使用其中一个Timer类建立对象就必须引用全路径建立对象,
如:javax.swing.Timer timers=new javax.swing.Timer();
才不会导致程序出错。
不是这个类叫什么名字的问题,而是我如果要写File类的操作,就要用FileSystem中的Native Interface,面这个JNI只能在名为java.io包中被使用.
java.io包只能有一个。
同意:haode(好的)