Liferay未解决的要求

时间:2019-03-19 23:42:48

标签: java eclipse gradle portlet liferay-7

我需要在另一个Java项目的liferay模块项目中使用某些类。我正在使用gradle,并且在部署我的应用程序时,即使gradle编译了我的jar文件,我仍然收到Unresolved requirements错误。

这是我到目前为止所做的,我的gradle.build:

compile files('libs/p01-jdbc.jar')  
compileOnly group: "org.mql.biblio.dao.jdbc", name: "p01-jdbc", version: "default"

我的bnd文件:

Bundle-Name: Inter_Portlet_Communication
Bundle-SymbolicName: Inter_Portlet_Communication
Bundle-Version: 1.0.0
Export-Package: \
    com.mql.ipc.constants
Include-Resource: @p01-jdbc.jar

还有我的进口

import org.mql.biblio.dao.jdbc.DataBase;
import org.mql.biblio.dao.jdbc.DataSource;
import org.mql.biblio.dao.jdbc.MySQLDataSource;

P.S:我正在编译的jar也使用本地mysql.jar(在名为lib的文件夹中)。

2 个答案:

答案 0 :(得分:1)

在“一切正常”之前,您不应盲目compileInclude。检查this article,了解所做的事情-最好同时将依赖项部署到OSGi容器,这也是更可取的-如果它们也是OSGi捆绑包。或者,也使它们成为OSGi捆绑包。

如果p01-jdbc.jar已经是OSGi软件包:将其部署到Liferay。如果这是一个自定义库而不是OSGi捆绑包,我希望将其制作成一个,然后参见上文。

对于数据库驱动程序,稍后可能会遇到这种情况,因为mysql驱动程序也经常在全球范围内部署,并且您可能遇到无法相互替代的模棱两可的类,或不同版本中的相同类,通过不同的类加载器。

答案 1 :(得分:0)

找到我的问题的答案,我不得不使用compileInclude而不是compile。我还需要为依赖项jar需要的另一个jar添加一行:

compileInclude files('libs/p01-jdbc.jar') 
compileInclude files('libs/mysql.jar') //This jar is used by the first one