CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

多个包同名

楼主tomxutomxu(shprog)2002-09-14 21:32:49 在 Java / J2SE / 基础类 提问

如果有两个包,名字一样,但其物理位置不一样。在一个类中我引用这个包,我发现,两个包中的类都会可以被引用。也可以被JAVAC执行,但是在Resin中,我发现,同名的包不能被放在两个地方,不然就会出现NoClassFoundException,请问有谁遇到过这个现象,可以解释一下吗?谢谢。 问题点数:50、回复次数:17Top

1 楼zbc(修身养息,百战不怠)回复于 2002-09-14 21:40:39 得分 50

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

2 楼Joeblackyang(暗夜精灵)回复于 2002-09-14 22:01:58 得分 0

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

3 楼chiliast(钓鱼太郎)回复于 2002-09-14 23:30:19 得分 0

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

4 楼haode(好的)回复于 2002-09-15 07:24:32 得分 0

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

5 楼haode(好的)回复于 2002-09-15 07:25:35 得分 0

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

6 楼xiao_yuer(小鱼儿)回复于 2002-09-15 10:39:12 得分 0

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

7 楼tomxutomxu(shprog)回复于 2002-09-15 19:59:34 得分 0

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

8 楼namowen(寒号不已)回复于 2002-09-15 20:06:33 得分 0

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

9 楼tomxutomxu(shprog)回复于 2002-09-15 21:28:10 得分 0

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

10 楼haode(好的)回复于 2002-09-15 22:16:03 得分 0

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

11 楼lanyunfeng(蓝色咖啡)回复于 2002-09-15 23:29:34 得分 0

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

12 楼tomxutomxu(shprog)回复于 2002-09-16 09:10:20 得分 0

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

13 楼tomxutomxu(shprog)回复于 2002-09-18 17:55:08 得分 0

!!!!!!!!!!!!Top

14 楼babyfu(你的亲亲宝贝)回复于 2002-09-18 17:59:48 得分 0

?????????????????????  
  Top

15 楼tomxutomxu(shprog)回复于 2002-10-10 11:34:06 得分 0

请高手研究研究。Top

16 楼tomxutomxu(shprog)回复于 2002-10-27 10:07:58 得分 0

翻出来看看。Top

17 楼fanqing(火影忍者+28%(准备学习进程/线程))回复于 2002-10-27 11:15:59 得分 0

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

相关问题

  • 如何使用jar命令将一个目录打包为同名jar文件?
  • 多个checkbox同名的情况下如何在JavaScript中访问
  • 如何获取多个相同名字的checkbox的值???
  • 请教高手, 怎样在打包时把两个同名数据库放到两个不同的目录下?
  • 在VB的安装包中,怎样才能替换掉一个已经存在的同名文件?
  • 怎样便历多个不同名字的TEXTBOX的同个属性
  • 多个同名进程,如何确定我要找的那个进程?
  • 请问多个同名的控件怎样用Request返回一个数组
  • 多个不同名称的帐户登录同一系统问题
  • vc.net 2003中,如果包含的路径下有两个同名文件,如何指定用到的是哪一个?还有,如何查出各包含路径下是否有同名文件?

关键词

  • classpath
  • swing
  • 包
  • 同名
  • 类
  • 引用
  • ccc
  • 使用
  • 目录
  • io

得分解答快速导航

  • 帖主:tomxutomxu
  • zbc

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo