Eclipse:为什么ProjectA的库jar可以访问ProjectB的库jar,即使库jar没有标记为导出?

时间:2017-08-21 08:31:39

标签: java eclipse buildpath

我有两个项目,我们称之为项目A和项目B.项目A使用项目B作为库项目,项目B使用“library.jar”。项目B不会导出此库。但是,项目A使用的第三方库可以使用项目B中的“library.jar”。

这怎么可能?

如果我在项目A中创建一个试图引用这个确切库的类,它就无法导入这个库,但导入的库可以吗?

它肯定在使用该库,因为如果我从Project Bs构建路径中删除它,它对项目A中的库也不起作用。

2 个答案:

答案 0 :(得分:1)

"导出" flag是一个IDE独占设置,可以正确管理项目(依赖项)。 在编译时,可以使用类路径中的每个类,因此从技术上讲,您的项目A可以使用" library.jar"但是您的IDE设置会阻止您这样做。

答案 1 :(得分:1)

导出表示API 未导出表示内部:

术语 导出 来自OSGi /插件开发(请参阅Eclipse help: Plug-in Runtime)并引用可见性:导出构建类条目在构建路径中具有该项目的项目中可见。 未导出构建路径条目在上游项目构建路径的一部分,但 不可见(不能在源代码中引用。)

Eclipse有自己的编译器,它在编译时支持模块化(为OSGi开发,但通过所需项目 export 标志也以简单方式提供,用于普通Java)。如果不使用OSGi,则只有在运行时没有模块化的平面构建路径。