使用bndtools包装从默认包导入的第三方jar [英] Wrap third party jar that imports from default package using bndtools

查看:160
本文介绍了使用bndtools包装从默认包导入的第三方jar的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想包装第三方jar。不幸的是,供应商将一个单一类(a.class)与一个方法放在默认包中。

I want to wrap a third party jar. Unfortunately the vendor placed one single class (a.class) with one single method into the default package.

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

When I try to include the resource using Include-Resource: @lib/acme-8.0.jar, it results in the following error:

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 给我以下输出(缩写,供应商名称替换为极致)

bnd print -all acme-8.0.jar gives me the following output (shortened, vendor name replaced with 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
[...]

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

If I understand this output correctly, several packages use the default package. How is that even possible? As far is I know, you can not import classes from the default package.

我已经与移动违规类的请求联系了供应商。有可能他不会遵循我的建议。

I already contacted the vendor with the request to move the offending class. Chances are, that he will not follow my suggestion.

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

Is there a workaround to handle classes in the default package?

推荐答案

您可能可以使用以下选项:

You probably can get away with the following option:

 -fixupmessages: "The default package "

这篇关于使用bndtools包装从默认包导入的第三方jar的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆