未解决的要求:导入包:com.google.common.base
Posted
技术标签:
【中文标题】未解决的要求:导入包:com.google.common.base【英文标题】:Unresolved requirement: Import-Package: com.google.common.base 【发布时间】:2021-03-04 09:11:10 【问题描述】:我正在尝试向 Liferay 添加一个外部库 - Orika 库。
我在 build.gradle 中添加了 Gradle 依赖项,如下所示:
compileInclude group: 'ma.glasnost.orika', name: 'orika-core', version: '1.5.4'
我使用 compile Include 是为了让模块也附加依赖项。
该库在本地运行良好 - 我已经使用类中的 main 方法对其进行了测试,但是当我部署到 Portal 时,我收到以下错误:
org.osgi.framework.BundleException: Could not resolve module: <YourModuleName> [2755]_ Unresolved requirement: Import-Package: com.google.common.base_ [Sanitized]
这似乎是由于运行时缺少库引起的,但不清楚的是,如果我在 public static main
内运行它时,为什么会在构建时添加这些依赖项?它按预期工作?
另外,我检查了我的 Eclipse 中下载的 libs Gradle,看看是否有任何带有 com.google.commom.base
的包,但我没有找到。
所以,因为在构建时完成了一些其他步骤,所以我检查了生成的 jar 中的 MANIFEST.MF(例如 eclipse-workspace
org.osgi.framework.BundleException: Could not resolve module: <your_module_name> [2755]_ Unresolved requirement: Import-Package: com.sun.jdi_ [Sanitized]
所以,问题是 - 为什么要添加这些依赖项,我怎样才能删除或满足它们? - 鉴于我在 Eclipse 中没有它们,那么我会去删除它们.
【问题讨论】:
【参考方案1】:这是我花了几个小时后得出的结论:
对于外部 jar,compileInclude
策略的行为与我预期的不同 - 可能是一个很好的线索,但我采用了下面详述的步骤。
在我的情况下,在包含依赖项时仅使用 compileOnly
会更好。
所以,第一步 - 将以下内容添加到您的build.gradle
:
compileOnly group: 'ma.glasnost.orika', name: 'orika-core', version: '1.5.4'
在第二步中,您必须在bnd.bnd
文件中指明外部jar 需要的其他依赖项。就我而言(Orika lib),它需要以下列表:commons-compiler-3.0.8.jar,janino-3.0.8.jar,java-sizeof-0.0.5.jar,javassist-3.24.0-GA.jar ,paranamer-2.8.jar,@slf4j-api-1.7.26.jar - 我已经检查了 repo 详细信息以便找出它并从那里获取信息(例如:来自here)。所以,添加到build.gradle
后我要做的就是在bnd.bnd
中添加以下行:
Include-Resource: @orika-core-1.5.4.jar,@commons-compiler-3.0.8.jar,@janino-3.0.8.jar,@java-sizeof-0.0.5.jar,@javassist-3.24.0-GA.jar,@paranamer-2.8.jar,@slf4j-api-1.7.26.jar
最后一步是排除构建过程放置在MANIFEST.MF
文件中的包 - 我在这里谈论的是以Unresolved requirement ...
开头的问题。为了知道它不需要什么,我部署了多次,每次都将所需的包添加到Import-Package
列表(这是bnd.bnd
文件中的另一个属性)。最终名单是:
Import-Package: \
!com.sun.jdi.*,\
!com.sun.tools.attach,\
!com.google.common.base,\
!org.slf4j.impl,\
*
注意:阅读更多关于我写的 here 和 here 的内容可能会对您有所帮助。
【讨论】:
以上是关于未解决的要求:导入包:com.google.common.base的主要内容,如果未能解决你的问题,请参考以下文章
Unity3D,导入包的代码未显示在 Visual Studio 中
HttpCannary根证书未安装,无法抓取SSL,TLS加密数据包问题解决方法
HttpCannary根证书未安装,无法抓取SSL,TLS加密数据包问题解决方法