我使用CQ5原型创建了一个新的Maven项目,并将其导入到IntelliJ IDEA中。 IntelliJ会标记一些类的用法,例如org.apache.felix.annotations.Component
、org.apache.felix.annotations.Reference
等, 并显示以下错误消息:
The package is not exported by the bundle dependencies
- 这是一个合法的错误吗?
- 我该如何修复它(而不是禁用检查)?
我使用CQ5原型创建了一个新的Maven项目,并将其导入到IntelliJ IDEA中。 IntelliJ会标记一些类的用法,例如org.apache.felix.annotations.Component
、org.apache.felix.annotations.Reference
等, 并显示以下错误消息:
The package is not exported by the bundle dependencies
您是否将这些包作为捆绑定义的一部分进行导出? 在maven项目中,您应该使用maven bundle插件,并定义<Export-Package>your.packages.here</Export-Package>
。 这些包是否包含在该定义中? 如果没有,这些服务实际上将不可用于OSGi。
要解决此问题,请检查pom文件中是否存在相应的依赖项,以您的情况来看,我认为它可能已经存在,因为您刚刚从Eclipse导入它们,那里没有出现任何错误。还要检查所引用的settings.xml是否正确,并且位于正确的位置,并且从Intellij引用了正确的设置。您的settings.xml存在于maven home中,或者可能被引用为maven home中的符号链接。希望这可以帮助。
只需在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>