首页 > 解决方案 > 在 Eclipse 插件中未解析导出的包

问题描述

我通过项目的目标平台定义(即另一个带有 的 Maven 项目)在我的一个包(Maven )中使用org.slf4j:slf4j-api:1.7.30ch.qos.logback:logback-classic:1.2.3<packaging>eclipse-plugin<packaging>eclipse-target-definition

slf4j-apiJARMANIFEST.MF包含:

...
Import-Package: org.slf4j.impl;version=1.6.0

logback-classicJAR 还包含该包及其org.slf4j.impl包含MANIFEST.MF

...
Export-Package: ...
 ....................., org.slf4j.impl;versi
 on="1.7.25";uses:="org.slf4j,org.slf4j.spi"
...

如果我添加:

Import-Package: ...
 ...
 org.slf4j,
 ch.qos.logback.classic,
 org.slf4j.impl

到我的包的 MANIFEST.MF` 只有前两个被解决。对于后者 Eclipse 显示错误:

捆绑“ch.qos.logback.slf4j”导出包“org.slf4j.impl”未解决

并且ch.qos.logback.classic_1.2.3.v20200428-2012.jar在我的包的Plugin-Dependencies文件夹中仅显示ch.qos.logback.classic包及其子包。

主要问题:

  1. 为什么org.slf4j.impl不被视为已导出,因此无法解决?

小问题:

  1. Bundle-SymbolicName错误消息中的 来自哪里?

  2. 目标平台v20200428-2012定义中logback-classic的 JAR的限定符从何而来?它不包含这个,而只是.MANIFEST.MFBundle-Version: 1.2.3

  3. 为什么要slf4j-api进口org.slf4j.impl?不应该依赖 API 的实现,反之亦然?

更新

我找到了 2. 和 3. 的答案(不是第一次在编写 SO 问题时发生这种情况:):它来自 Eclipse 本身:https ://ftp.fau.de/eclipse/releases/2021-03/202103171000/plugins /

这也导致了 1. 的答案:我实际上并没有使用原始slf4jlogbackJAR,而是来自 Eclipse 和ch.qos.logback.slf4j's 的那些MANIFEST.MF包含:

...
Export-Package: org.slf4j.impl;x-internal:=true;version="1.7.30";uses:
 ="org.slf4j,org.slf4j.spi"
...

那么 5. 如何让包org.slf4j.impl导出/导入呢?

标签: eclipse-pluginslf4josgi-bundlelogback-classic

解决方案


推荐阅读