使用bndtools包装从默认包导入的第三方jar



我想包装一个第三方jar。不幸的是,供应商在默认包中放入了一个带有一个方法的类(.class)。

当我尝试使用Include-Resource: @lib/acme-8.0.jar包含资源时,会导致以下错误:

The default package '.' is not permitted by the Import-Package syntax.
This can be caused by compile errors in Eclipse because Eclipse creates valid class files regardless of compile errors.
The following package(s) import from the default package [com.acme.util]

bnd print -all acme-8.0.jar给出了以下输出(缩写,供应商名称替换为acme)

[API USES]
.                                        []
com.acme.common                            []
com.acme.acmedrt                             [com.acme.acmedrt.types, com.acme.acmedrt.comm.jobtransport, com.acme.acmedrt.workflow.type
s]
com.acme.acmedrt.impl                        [com.acme.acmedrt, com.acme.acmedrt.types, org.apache.commons.logging, com.acme.acmedrt.imp
l.types, com.acme.acmedrt.comm.jobtransport, com.acme.acmedrt.pool, org.apache.commons.pool, com.acme.acmedrt.workflow.types]
com.acme.acmedrt.impl.types                  [com.acme.acmedrt.types, com.acme.acmedrt, com.acme.acmedrt.impl, org.xml.sax]
com.acme.acmedrt.notification                [com.acme.acmedrt]
com.acme.acmedrt.pool                        [com.acme.acmedrt, com.acme.acmedrt.impl.types, com.acme.acmedrt.impl, com.acme.acmedrt.types,
org.apache.commons.pool, com.acme.acmedrt.workflow.types]
com.acme.acmedrt.types                       [com.acme.acmedrt, com.acme.common]
com.acme.acmedrt.util                        []
com.acme.acmedrt.workflow.types              [com.acme.common]
com.acme.tools                             []
com.acme.util                              []
com.acme.util.xml                          []

[LIST]
  a.class
META-INF
  MANIFEST.MF
com
com <no contents>
com/acme
com/acme <no contents>
com/acme/common
  Enum.class
com/acme/acmedrt
[...]

如果我正确理解这个输出,那么有几个包使用默认包。这怎么可能呢?据我所知,您不能从默认包导入类。

我已经联系了供应商,请求移动有问题的类。他很可能不会听从我的建议。

是否有解决方法来处理默认包中的类?

您可能可以选择以下选项:

 -fixupmessages: "The default package "

相关内容

  • 没有找到相关文章

最新更新