eclipse-plugin - 在 Eclipse 插件中未解析导出的包
问题描述
我通过项目的目标平台定义(即另一个带有 的 Maven 项目)在我的一个包(Maven )中使用org.slf4j:slf4j-api:1.7.30
和ch.qos.logback:logback-classic:1.2.3。<packaging>eclipse-plugin
<packaging>eclipse-target-definition
slf4j-api
JARMANIFEST.MF
包含:
...
Import-Package: org.slf4j.impl;version=1.6.0
logback-classic
JAR 还包含该包及其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
包及其子包。
主要问题:
- 为什么
org.slf4j.impl
不被视为已导出,因此无法解决?
小问题:
Bundle-SymbolicName
错误消息中的 来自哪里?目标平台
v20200428-2012
定义中logback-classic
的 JAR的限定符从何而来?它不包含这个,而只是.MANIFEST.MF
Bundle-Version: 1.2.3
为什么要
slf4j-api
进口org.slf4j.impl
?不应该依赖 API 的实现,反之亦然?
更新
我找到了 2. 和 3. 的答案(不是第一次在编写 SO 问题时发生这种情况:):它来自 Eclipse 本身:https ://ftp.fau.de/eclipse/releases/2021-03/202103171000/plugins /
这也导致了 1. 的答案:我实际上并没有使用原始slf4j
和logback
JAR,而是来自 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
导出/导入呢?
解决方案
推荐阅读
- sql - 如何在 SQL Server 中创建存储过程?
- amazon-web-services - 在 S3 存储桶文件夹中托管静态网站
- ansible - 如何使用 Ansible playbook 从 nexus 下载工件到远程机器
- http - HTTP POST 数据内容长度
- java - WebRTC 在通话期间开始/停止录音
- sql-server - 存储过程:Sql server 表备份
- string - ^x^y 历史命令中第一次出现字符串的unix技巧(不是最后一个/上一个命令)?
- ruby - 尝试将每个转换为 while 循环,会创建 TypeError。为什么符号有问题?
- git - 使用哪个路径来添加 Git 远程?
- c++ - GCC/G++ 编译器设置 GUI