如何避免"捆绑包依赖关系不会导出包#34; IntelliJ IDEA中的错误?

时间:2014-08-13 11:29:20

标签: maven intellij-idea osgi cq5 aem

我使用CQ5 archetype创建了一个新的Maven项目,并将其导入IntelliJ IDEA。 IntelliJ标记了某些类的用法,例如org.apache.felix.annotations.Componentorg.apache.felix.annotations.Reference等.IntellIJ错误地显示以下错误消息:

The package is not exported by the bundle dependencies

IntelliJ OSGi Error Message

  1. 这是合法的错误吗?
  2. 如何修复它(与禁用检查相反)?

6 个答案:

答案 0 :(得分:3)

我使用的是版本12.1.4

  1. 错误似乎是合法的。我无法在the ACQ 5.6.1 Doc中找到该包。

  2. 我通过以下方式关闭检查:

    • 右键单击右边距的块。
    • 点击"自定义突出显示级别"。
    • 将滑块向下移至"无"。

答案 1 :(得分:2)

您是否将这些包导出为捆绑定义的一部分?在maven项目中,您应该定义具有<Export-Package>your.packages.here</Export-Package>的maven bundle插件。这些包是否包含在该定义中?如果没有,那么这些服务实际上不会在OSGi中提供。

答案 2 :(得分:1)

在我的情况下,我意外地配置了OSGi&#34;当我只想配置Spring时。我处理这个问题的方法是右键单击其中一个受影响的行的右边距,然后单击&#34;自定义突出显示级别&#34; - &GT; &#34;配置检查&#34;。我认为hippoLogic的解决方案将摆脱所有语法级错误突出显示以及有用的检查级突出显示。这样您就可以简单地调整后者以排除OSGi。

对OSGi进行解除配置甚至更好(我还没有调查过),但这是一个快速/肮脏的解决方案,可以减少突出显示的噪音。

答案 3 :(得分:0)

要修复此检查,如果pom文件中存在相应的依赖项,在您的情况下我认为它很少存在,因为您刚刚从eclipse导入它们并没有给出任何错误。还要检查被引用的settings.xmml是否正确,并且是否正确,并且是从intellij引用了正确的。您的settings.xml存在于maven home中,或者可能被称为maven home中的符号链接。希望这会有所帮助。

答案 4 :(得分:0)

我正在研究github上的项目克隆,它与OSGI无关,所以我认为这是个想法上的错误,或者我不小心打开了。然后我认为创意工作中“ OSGI”的功能取决于插件,因此我否认了这个插件 禁用OSGI插件,错误消息消失。

在Mac OS中:

command + shift + a,输入插件

搜索“ OSGI”,然后禁用此插件。

答案 5 :(得分:0)

只需将有关Maven构建插件的相关软件包作为@Brenn的答案导出,详细说明如下:

<plugin>
    <groupId>org.apache.felix</groupId>
    <artifactId>maven-bundle-plugin</artifactId>
    <version>${maven.bundle.version}</version>
    <extensions>true</extensions>
    <configuration>
      <instructions>
        <Bundle-DocURL>${project.url}</Bundle-DocURL>
        <Bundle-Activator>
          org.apache.tika.parser.internal.Activator
        </Bundle-Activator>
        <Import-Package>
          org.w3c.dom,
          org.apache.tika.*,
          *;resolution:=optional
        </Import-Package>
        <Export-Package>
          your package here
        </Export-Package>
      </instructions>
    </configuration>
  </plugin>