2017-03-17 17 views
0

私はEclipseを使用してRESTモジュールを作成し、それは私にbuild.gradleに次のエントリを与えただけでLiferayの7 からのREST Webサービスを呼び出すことはできませんよデフォルトで:Liferayの7 - RESTのWebサービスのdoesntの仕事を消費する最も簡単な方法

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サービス展開と起動エラー:

を私は build.gradle

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

に次のエントリを追加してみました

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 

は、この作品を作るために、特定のエントリがありますか?

答えて

0

bnd.bndファイルにパッケージをインポートしていますか?はいの場合は、オプション "解像度:=オプション"を試すことができますか?あなたの問題を解決するはずです。

たとえば、あなたがbnd.bndに次のように書く必要があります。

インポートパッケージ: com.sun.jersey.api.json;解像度:=オプション。 \ com.sun.jersey.core.header;解決策:=オプション、

お客様の要件に応じてパッケージ名を変更する必要があることにご注意ください。上記は単なる例です。

私はあなたがすでにOSGiのモジュールの依存関係のブログを参照している願っています: https://web.liferay.com/web/user.26526/blog/-/blogs/osgi-module-dependencies

あなたがbnd.bndのコンテンツを共有することができれば、それはより便利になります。