我需要在另一个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的文件夹中)。
答案 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