首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试理解Java类加载

尝试理解Java类加载
EN

Stack Overflow用户
提问于 2010-04-14 07:27:08
回答 5查看 487关注 0票数 1

我现在正在学习Java和OSGi,所以我已经读了几本书。在一本特殊的书中描述了类的加载。

你可以从作者页面(Neil Bartlett)下载它(免费和合法):OSGi Book

在第9页和第10页上是这些图片:

alt text http://img265.imageshack.us/img265/4127/picture1qct.pngalt text http://img297.imageshack.us/img297/594/picture2yv.png

似乎我们的类"Foo“不会使用foobar.jar的"Bar”类,而是使用naughty.jar的"Bar“类。

由于Java类路径的扁平和全局结构,这可能是,但据我所知,您将定义一个包,您希望从其中导入某个类:

代码语言:javascript
复制
import foobar.Bar

这应该可以防止加载错误的类,不是吗?当然,假设这个包被称为"foobar“。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-04-14 07:42:10

import语句与类加载无关-它只允许您使用短名称Bar而不是完全限定的foobar.Bar。如果foobar.jarnaughty.jar都包含完全限定名为foobar.Bar的类,则类加载器将从类路径上具有所需类的第一个jar文件中加载类。

票数 4
EN

Stack Overflow用户

发布于 2010-04-14 07:38:17

好主意,但不幸的是,包独立于jar文件名。您可以将任意包中的内容全部放在同一个jar文件中,也可以将任意jar文件名与不相关的包名放在一起。这取决于类加载器为您解决这些问题。

票数 2
EN

Stack Overflow用户

发布于 2010-04-14 07:45:23

问题是foobar.jarnaughty.jar可能都有一个全限定名为foobar.Bar的类。然后foobar.Foo解析naughty.jarfoobar.Bar,而不是foobar.jarfoobar.Bar

希望这能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2633888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档