问:java寻找classpath里的class有顺序吗?系统指定classpath的顺序如何影响编译?

truelvying 2003-12-15 08:48:13
为什么有import package的程序
当classpath中.(表示当前路径)在package所在路径的时候就不能通过编译
显示
bad class file: C:\JavaClasses\Window.class
class file contains wrong class: avi.Window

Please remove or make sure it appears in the correct subdirectory of the
classpath.

Window screen = new Window("example1.java","bold","red",72);
^
1 error

Process completed.

而把.(代表当前路径)移动到包所在的路径后面的时候就能通过编译了呢?
java在寻找classpath的时候到底遵循什么规则呢?
迷惑中!虽然问题解决了,希望大家都来讨论讨论呀,来者有分
...全文
511 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
junnef 2003-12-16
  • 打赏
  • 举报
回复
当前类中包含avi.Window,你的Window类的路径放得也有些问题呀。
classpath中通常是先找到哪个用哪个,所以有前后顺序,特别是有些软件要求的标准包和你以前系统中的版本不一致的时候,他就会按你系统中以前的那个做为标准,结果不符合版本要求,就会报错了。
icecloud 2003-12-15
  • 打赏
  • 举报
回复
这个跟ClassLoader的机制有关

一个类寻找类,首先看看当前类的ClassLoader的ClassLoader是否加载了需要的类的
如果没有则用自己来加载。

所以classpath的优先级,首先是jvm的classpath,如java.lang等等,然后是ext的如javax.servlet等等,最后是application,如tomcat的。再最后才是你自己的lib目录

TheTongs 2003-12-15
  • 打赏
  • 举报
回复
这是因为,java找寻的的确是有次序的,它会按照classpath指定的次序查找,比如java -classpath /java/MyClasses ;/java/OtherClasses 那它自然就先找MyClass再找OtherClasses了。你这种情况,jdk先找当前目录找不到window这个类自然报错咯。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧