2017-07-14 41 views
0

私はLiferayモジュールを作成し、それを正常にデプロイしました。私は、Eclipseで問題なくライブラリを使用することができます./gradlew eclipseを実行した後Gradleに依存関係を追加しました.Liferayは "未解決の要件:インポートパッケージ"

compileOnly group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.5.3' 

は、その後、私はbuild.gradleさんdependenciesセクションにこの行を追加しました。しかし、展開は失敗します。

12:29:35,454 WARN [fileinstall-/home/nico/liferay/osgi/modules][org_apache_felix_fileinstall:103] Error while starting bundle: file:/home/nico/liferay-dxp-digital-enterprise-7.0-sp3/osgi/modules/de.nico.mymodule-1.0.0.jar 
org.osgi.framework.BundleException: Could not resolve module: de.nico.mymodule [1085]_ Unresolved requirement: Import-Package: org.apache.http; version="4.5.3"_ [Sanitized] 
    at org.eclipse.osgi.container.Module.start(Module.java:429) 
    at org.eclipse.osgi.internal.framework.EquinoxBundle.start(EquinoxBundle.java:402) 
    at org.apache.felix.fileinstall.internal.DirectoryWatcher.startBundle(DirectoryWatcher.java:1253) 
    at org.apache.felix.fileinstall.internal.DirectoryWatcher.startBundles(DirectoryWatcher.java:1225) 
    at org.apache.felix.fileinstall.internal.DirectoryWatcher.doProcess(DirectoryWatcher.java:512) 
    at org.apache.felix.fileinstall.internal.DirectoryWatcher.process(DirectoryWatcher.java:361) 
    at org.apache.felix.fileinstall.internal.DirectoryWatcher.run(DirectoryWatcher.java:312) 

私はそれがorg.apache.httpなくorg.apache.httpcomponentsを探している理由はわかりません。ここで

は私bnd.bndです:

Bundle-SymbolicName: de.nico.mymodule 
Bundle-Version: 1.0.0 
Liferay-Require-SchemaVersion: 1.0.0 

この問題を調査する方法は?
私はJARを手動でダウンロード/追加したくありません。

答えて

1

さらなる調査は例外メッセージから開始されます。 RUNTIMEには以下の要件が存在しないと言われています:

インポートパッケージ:org.apache.http;バージョン=「4.5.3」

私はそれが次のいずれかだと仮定しています:

  • あなたがhttpcomponents展開していなかった(あるいはあなたが必要なバージョンを... Semantic Versioning参照)にライブラリをLiferay(デプロイメントが失敗してもコンパイル作業として)
  • httpcomponentsはOSGiバンドルとしてパッケージ化されていない可能性があります。その場合、コードを利用可能にする方法を決める必要があります。詳細については、良い出発点は、(コメントからこれを推進し、感謝アンドレア)the official docsあるとあなたはLiferayの実行時にそれらの依存関係を追加する方法David Nebinger's blog article

はあなた次第です。依存関係がOSGiバンドルの場合は、&を直接ダウンロードして展開できます。 OSGiバンドルがない場合は、リンクされた記事に記載されているテクニックの1つに従ってください。

+1

公式ドキュメントもあります:https://dev.liferay.com/develop/tutorials--knowledge_base/7-0/adding-third-party-libraries-to-a-module –

+0

@ AndreaDiGiorgi:そのページで説明されているものを試してみました。 'org.gradle型のオブジェクトの引数[{group = org.apache.httpcomponents、name = httpclient、version = 4.5.3}]のメソッドcompileInclude()を見つけることができませんでした。 .api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler' –

+0

@Olaf実際、私は「httpコンポーネントをLiferayにデプロイしませんでした」と私はGradleが私のモジュールに正しいものを含めると思っていました。私はhttps://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient-osgiを見つけました。手動でそれをダウンロードし、多くの依存関係を手助けして、それらをLiferayのdeploy /フォルダに入れることをお勧めしますか? –

関連する問題