OSGI Gradle未解决的要求:Import-Package:com.opencsv;版本=" [3.8.0,4.0.0)" Liferay IDE 3

时间:2016-06-29 07:38:06

标签: eclipse gradle liferay osgi build.gradle

我正在尝试使用项目中的opencsv库来读取一些CSV文件。我在gradle中正确添加了这个依赖项,它似乎用于开发时间。但是在使用OSGI的部署期间出现此错误:

Unresolved requirement: Import-Package: com.opencsv;version="[3.8.0,4.0.0)"

也许我失去了基础知识。我在jar里面挖了一下并且在Manifest中自动生成出现了#34; com.opencsv; version =" [3.8.0,4.0.0)" in" Import-Package"条目。我认为我的build.gradle有错:

dependencies {
    compile group: "com.liferay.portal", name: "com.liferay.portal.kernel", version: "2.3.0"
    compile group: "com.liferay.portal", name: "com.liferay.util.taglib", version: "2.1.0"
    compile group: "javax.portlet", name: "portlet-api", version: "2.0"
    compile group: "javax.servlet", name: "servlet-api", version: "2.5" 
    compile group: "jstl", name: "jstl", version: "1.2"
    compile group: "org.osgi", name: "org.osgi.compendium", version: "5.0.0"    
    compile group: "com.opencsv", name: "opencsv", version: "3.8"

}

version = '1.0.0'

我确信解决方案可能很容易而且很愚蠢,但我无法得到它。

3 个答案:

答案 0 :(得分:2)

我会回复自己。我希望这对其他人有所帮助。

对于那些类型的库,你必须做这件事:

  • 下载您的jar并将其放入您的主要/资源。
  • 在项目的bundle.gradle中添加

    bundle {
    exclude group: 'group.of.package'
    instruction 'Bundle-ClassPath', '.,nameofjar.jar' 
    instruction 'Embed-Transitive', 'true'}
    
  • 刷新Gradle依赖项

  • 从服务器中删除失败的捆绑包。

  • 清理并构建和部署。

我希望这适合你。如果没有尝试联系我并尝试帮助。

答案 1 :(得分:1)

如果您使用liferay gradle插件或bnd gradle插件,另一个选择是将bnd.bnd文件添加到您的模块并将此指令放在那里

Private-Package: \
    <your.package.name>.*,\
    com.opencsv.*

这样您就不需要bundle {...}块。私有包将所有引用的文件复制到您的文件jar中,这些类将在您的包执行期间可用。这是more reference on the Private-Package: instruction

答案 2 :(得分:0)

尝试将Import-Package: *; version="0";resolution:=optional添加到您的bnd文件中。它解决了我的问题,希望也能解决您的问题。