【问题标题】:OSGI: bundles, class inheritance and maven scopeOSGI:包、类继承和 Maven 范围
【发布时间】:2016-09-18 12:18:01
【问题描述】:

我有三个 maven 项目作为三个 osgi 包(即一个项目是一个包)。而且我有三个课程 - 每个捆绑包中都有一个课程。

Project/Bundle 1:
class A{}
pom:    

Project/Bundle 2:
class B extends A{}
pom:
 <dependency>
     <groupId>com.company</groupId>
     <artifactId>project1</artifactId>
     <version>1.0.0</version>
     <scope>provided</scope>
</dependency>

Project/Bundle 3
class C extends B{}
pom:
 <dependency>
     <groupId>com.company</groupId>
     <artifactId>project2</artifactId>
     <version>1.0.0</version>
     <scope>provided</scope>
</dependency>

为什么我在编译 project3 时出现无法访问类 A 的异常?仅将 project1 作为依赖项添加到项目 3 即可解决问题。但是,为什么?

【问题讨论】:

    标签: java maven osgi


    【解决方案1】:

    这是因为提供的范围。它打破了传递查找。

    【讨论】:

    • 感谢您的回答。我将范围更改为编译,但我看不出使用“提供”范围编译的 jar 和使用“编译”范围编译的 jar 之间有任何区别。怎么解释?
    • 两个都改了吗?
    • @Neil Bartlett 当我谈到差异时,我说的是使用提供范围构建的 jar (添加 project1 作为 project3 的依赖项 - 我在我的帖子中写的)和使用编译范围构建的 jar 之间的区别(没有添加 project1 作为 project3 的依赖项)。据我了解,这个帖子stackoverflow.com/a/25777709/5057736 必须使用范围编译project1 打包inside bundle3。但是,我没有看到。这就是我要问的。
    • @Neil Bartlett 请不要忘记使用 at 符号向我发送消息。
    • @JimJim2000 不,使用编译范围依赖并不意味着应该嵌入包。您链接到的答案与构建 WAR 文件有关,这无关紧要。
    猜你喜欢
    • 1970-01-01
    • 2014-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-26
    • 2015-09-08
    • 2013-03-20
    • 2016-01-13
    相关资源
    最近更新 更多