2017-06-24 2 views
0

私はthis guideを使って書かれたLiferayジョブを持っています。私はliferay-ce-portal-tomcat-7.0-ga3を実行しています。ジョブではDLAppServiceUtilを使用してドキュメントライブラリを操作します。LiferayのスケジュールされたジョブがLiferayクラスの欠落で失敗する

ジョブはスケジュールどおりに開始されます。しかし、この例外はこの例外です。

Exception in thread "liferay/scheduler_dispatch-407" java.lang.NoClassDefFoundError: com/liferay/portlet/documentlibrary/service/DLAppServiceUtil 

何が問題なのですか?

マイpom.xmlは次のとおりです。

<!-- ... --> 
<dependency> 
    <groupId>com.liferay.portal</groupId> 
    <artifactId>portal-service</artifactId> 
    <version>7.0.0-nightly</version> 
    <scope>provided</scope> 
</dependency> 
<!-- ... --> 

マイジョブ・クラスは次のとおりです。

public class MyJob implements MessageListener { 

    @Override 
    public void receive(Message message) throws MessageListenerException { 
     // DLAppServiceUtil usage... 
    } 

} 

私はそれを解決することができますか?

答えて

1

Liferay 7では、serviceUtilクラスをもう使用しないでください(OSGiバンドルを作成する場合)。

代わりに、あなたのコンポーネントクラスに

@Reference 
DLAppService dlAppService; 

を追加します。リスナーを適切なOSGiコンポーネントにする方法を調べてください。 GiferubのLiferayのブレードサンプルにテンプレートがあるかもしれません。私は電話をしていて、&を詳しく調べるのは難しいです。

これがうまくいかない場合(あなたのコメントに示されているように)、ビルドプロセスをチェックする必要があります:プラグインのマニフェストが、必要なサービスにある依存関係を宣言していることを確認してください。 OSGiプラグインをビルドすることを推奨していることがわかります。依存関係が解決されるまでOSGiがプラグインを起動しないため、これをやっていないと仮定しています。

これは、bndを使用して行うことができます。詳細については、blade-samples内の数多くのMavenの例を確認してください。

+0

: 'ます。java.lang.NoClassDefFoundError:COM/Liferayを/ポートレット/ documentlibrary /サービス/ DLAppService'を –

0

クラスはportal-serviceには含まれていません、com.liferay.portal.kernelは正しいアーティファクトです。

奇妙なIDEは文句を言わないことを...私はnon_Utilバージョンに切り替え、それはまだ不足しているクラスに失敗し

関連する問題