首页 > 解决方案 > 需要在 MVC portlet 中包含 org.json 包以在 Liferay 7 中解析 JSON

问题描述

我有一个使用 gradle 创建的 MVC portlet,我想在其中解析 JSON,所以我包含了以下包,如下所示,

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.json.simple.JSONValue;

我还在 build.gradle 文件中包含了 org.json,如下所示:

dependencies {
compileOnly group: "com.liferay.portal", name: "com.liferay.portal.kernel", version: "3.0.0"
compileOnly group: "com.liferay.portal", name: "com.liferay.util.taglib", version: "2.0.0"
compileOnly group: "javax.portlet", name: "portlet-api", version: "3.0.0"
compileOnly group: "javax.servlet", name: "javax.servlet-api", version: "3.0.1"
compileOnly group: "jstl", name: "jstl", version: "1.2"
compileOnly group: "org.osgi", name: "osgi.cmpn", version: "6.0.0"
//compile group: 'com.squareup.okhttp', name: 'okhttp', version: '2.6.0'
compile group: 'org.json', name: 'json', version: '20180813'
compile group: 'org.apache.clerezza.ext', name: 'org.json.simple', version: '0.4'
compile group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.5'
}

编译成功,但在 Liferay(7) 中部署时,我收到以下错误:

在 Liferay 中部署时出现此错误:

org.osgi.framework.BundleException: Could not resolve module: mvc [952]_  Unreso
lved requirement: Import-Package: org.json; version="[20180813.0.0,20180814.0.0)

我也应该在 liferay 中包含包 org.json 吗?如果是,我应该在哪里添加它?

我无法添加任何新包请任何人帮助我。

标签: javaliferayliferay-7

解决方案


当您声明构建时依赖于 Liferay 中不可用的库时(无论是库本身还是特定版本),编译器会很高兴,并且 bnd 将生成(如果需要)运行时依赖于你的模块的 Manifest.mf。

如果这些依赖确实导致了运行时依赖,那么您还必须使这些库也可用于 OSGi 运行时(在本例中为 Liferay)。您可以像部署自己的模块一样执行此操作:只需将它们放入 Liferay 的deploy文件夹中。


推荐阅读