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

问题描述 投票:4回答:3

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

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

也许我正在失去基础知识。我在jar里面挖了一下并且在Manifest中自动生成了“import-Package”条目中的“com.opencsv; version =”[3.8.0,4.0.0]“。我认为我的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'

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

eclipse gradle liferay osgi build.gradle
3个回答
2
投票

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

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

  • 下载你的jar并将它放在你的主/资源中。
  • 在项目的bundle.gradle中添加 bundle { exclude group: 'group.of.package' instruction 'Bundle-ClassPath', '.,nameofjar.jar' instruction 'Embed-Transitive', 'true'}
  • 刷新Gradle依赖项
  • 从服务器中删除失败的捆绑包。
  • 清理,构建和部署。

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


1
投票

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

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

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.