我需要在另一个Java项目的liferay模块项目中使用一些类。我正在使用gradle,当我部署我的应用程序时,即使gradle编译我的jar文件,我也会收到Unresolved require错误。
这是我到目前为止所做的,我的gradle.build:
compile files('libs/p01-jdbc.jar')
compileOnly group: "org.mql.biblio.dao.jdbc", name: "p01-jdbc", version: "default"
我的文件:
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的文件夹中)。
你不应该盲目地compileInclude
一切,直到“它的工作”。检查this article你做了什么 - 更好的方法是将依赖项部署到OSGi容器 - 如果它们也是OSGi包。或者,也可以将它们作为OSGi包。
如果p01-jdbc.jar已经是OSGi包:将它部署到Liferay。如果它是一个自定义库而不是一个OSGi包,我宁愿把它变成一个,然后看到上面。
对于数据库驱动程序,这可能会在以后遇到这种情况,因为mysql驱动程序通常也是全局部署的,并且您可能遇到不能相互替换的模糊类,或者不同版本中的相同类,不同的类加载器。
找到我的问题的答案,我不得不使用compileInclude而不是编译。我还需要为我的依赖jar所需的另一个jar添加一行:
compileInclude files('libs/p01-jdbc.jar')
compileInclude files('libs/mysql.jar') //This jar is used by the first one