OSGi包清单中Bundle-Classpath的字符限制?

Chr*_*s K 2 java osgi apache-felix

使用Apache Felix,我有一个我编写的OSGi组件,它包含了我公司使用的一些中间件.目前它依赖于大量的外部库,我似乎已经遇到Bundle-classpath:参数长度的限制.我不得不将诸如commons-collections.jar之类的库重命名为ccoll.jar.

我很好奇是否有人有任何关于解决这个限制的建议?

Bundle-ClassPath: .,lib/log4j.jar,lib/cvfs.jar,lib/backport.jar,lib/cbeanutils.jar,lib/ccodec.jar,lib/ccoll.jar,lib/chttp.jar,lib/cjxpath.jar,lib/clang.jar,[libs redacted],lib/saaj-api.jar,lib/saaj-impl.jar,lib/Schemas.jar,lib/xbean.jar,lib/clog.jar,lib/dom4j.jar,lib/xml-apis.jar,lib/xerces.jar,lib/xalan.jar,lib/jaxp-ri.jar,lib/japi.jar,lib/mail.jar
Run Code Online (Sandbox Code Playgroud)

我想我可以通过不使用lib/bits来获得更多字符,但我很好奇这是一个错误,一个明确的限制,还是仅仅是我自己的愚蠢.

Mor*_*itz 9

http://java.sun.com/j2se/1.4.2/docs/guide/jar/jar.html中所述,清单行长度限制为72字节.之后,您将必须拆分该行并开始一个以空格字符开头的新行.在这种情况下:

Bundle-ClassPath: .,lib/log4j.jar,lib/cvfs.jar,lib/backport.jar,lib/cbea
 nutils.jar,lib/ccodec.jar,lib/ccoll.jar,lib/chttp.jar,lib/cjxpath.jar,l
 ib/clang.jar,[libs redacted],lib/saaj-api.jar,lib/saaj-impl.jar,lib/Sch
 emas.jar,lib/xbean.jar,lib/clog.jar,lib/dom4j.jar,lib/xml-apis.jar,lib/
 xerces.jar,lib/xalan.jar,lib/jaxp-ri.jar,lib/japi.jar,lib/mail.jar
Run Code Online (Sandbox Code Playgroud)

或者你可以使用像BND这样的工具自动为你做这样的事情(以及更多).