2017-03-17 52 views
0

我根本无法从Liferay的7 调用REST Web服务创建我使用Eclipse REST的模块,它给了我下面的条目的build.gradle默认:Liferay的7 - 最简单的方式来消耗REST Web服务不工作

dependencies { 
    compileOnly group: 'javax.ws.rs', name: 'javax.ws.rs-api', version: '2.0.1' 
    compileOnly group: "org.osgi", name: "org.osgi.service.component.annotations", version: "1.3.0" 
} 

代码来调用REST Web服务:

String uri = "http://RestServiceURL"; 
     Client client = ClientBuilder.newClient(); 
     WebTarget target = client.target(uri);  
     String result = target.request(MediaType.TEXT_PLAIN_TYPE) 
       .get().readEntity(String.class); 

当我部署和调用REST服务的错误:

Caused by: java.lang.ClassNotFoundException: org.glassfish.jersey.client.JerseyClientBuilder cannot be found by com.liferay.portal.remote.cxf.common_2.0.6 
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:444) 
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:357) 
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:349) 
at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:160) 
at java.lang.ClassLoader.loadClass(Unknown Source) 
at java.lang.Class.forName0(Native Method) 
at java.lang.Class.forName(Unknown Source) 
at javax.ws.rs.client.FactoryFinder.newInstance(FactoryFinder.java:115) 
at javax.ws.rs.client.FactoryFinder.find(FactoryFinder.java:225) 
at javax.ws.rs.client.ClientBuilder.newBuilder(ClientBuilder.java:86) 
... 110 more 

我尝试添加下面进入的build.gradle

compile group: 'org.glassfish.jersey.core', name: 'jersey-client', version: '2.21' 

有使这项工作的任何具体的项目?

回答

0

您是否将软件包导入您的bnd.bnd文件中?如果是,您可以尝试选项“分辨率:=可选”?它应该解决你的问题。

例如,你应该写在你的bnd.bnd如下:

进口包装: com.sun.jersey.api.json;分辨率:=可选的; \ com.sun.jersey.core.header; resolution:= optional;

请注意,您可能必须根据您的要求更改包名称,上面提到的仅仅是一个示例。

我希望你已经提到了OSGi的模块依赖博客: https://web.liferay.com/web/user.26526/blog/-/blogs/osgi-module-dependencies

如果你可以分享bnd.bnd的内容,这将是更有帮助。