2017-06-12 8 views
0

私はLiferayとSalesforceに取り組んでいます。私はLiferayを初めて勉強しています。私はあまりにも多くの時間を費やしていた問題を経験しています。Liferay 7サービスビルダーエラー[NoClassDefFoundError]

サービスビルダ(「newService」という名前)を作成することにしたポートレットがあります。

<service-builder package-path="com.fr.liferay"> 
    <namespace>SSB</namespace> 
    <entity local-service="true" name="Comp" remote-service="false" uuid="true"> 
    <!--<entity name="Foo" table="foo" uuid="true" local-service="true" remote-service="false" data-source="sampleDataSource" session-factory="sampleSessionFactory" tx-manager="sampleTransactionManager">--> 

     <!-- PK fields --> 

     <column name="compId" primary="true" type="long" /> 

     <!-- Group instance --> 

     <column name="groupId" type="long" /> 

     <!-- Audit fields --> 

     <column name="companyId" type="long" /> 
     <column name="userId" type="long" /> 
     <column name="userName" type="String" /> 
     <column name="createDate" type="Date" /> 
     <column name="modifiedDate" type="Date" /> 

     <!-- Other fields --> 

     <column name="compName" type="String" /> 
     <column name="compDesc" type="String" /> 
     <column name="compPath" type="String" /> 

     <!-- Order --> 

     <!-- References --> 

    </entity> 
</service-builder> 

は今、私はMavenのコマンドを実行します:ここに私のservice.xmlにあるmvn service-builder:build、それはnewService-apiアーティファクトを生成しました。私は、私のポートレットを起動

<dependency> 
    <groupId>com.fr.liferay.liferay7- 
       architecture.portail7.services.newService</groupId> 
    <artifactId>newService-api</artifactId> 
    <version>1.0.0</version> 
    <scope>provided</scope> 
</dependency> 

オン:

Comp comp = CompLocalServiceUtil.createComp(3); comp.persist();

私は、ポートレットののpom.xmlでnewservice-api依存関係を追加しました:

次のように私は私のポートレット内のサービスを呼んでいますこのエラーが発生する:

Caused by: java.lang.NoClassDefFoundError: com/fr/liferay/service/CompLocalServiceUtil 
    at com.fr.liferay.controllers.TestController.actionTwoMethod(TestController.java:151) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:180) 
    at org.springframework.web.portlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:367) 
    at org.springframework.web.portlet.mvc.annotation.AnnotationMethodHandlerAdapter.doHandle(AnnotationMethodHandlerAdapter.java:354) 
    at org.springframework.web.portlet.mvc.annotation.AnnotationMethodHandlerAdapter.handleAction(AnnotationMethodHandlerAdapter.java:285) 
    at org.springframework.web.portlet.DispatcherPortlet.doActionService(DispatcherPortlet.java:666) 
    ... 181 more 
12:55:57,243 ERROR [http-nio-8080-exec-5][render_portlet_jsp:131] null 
java.lang.NoClassDefFoundError: com/fr/liferay/service/CompLocalServiceUtil 
    at com.fr.liferay.controllers.TestController.actionTwoMethod(TestController.java:151) 
    at com.liferay.portlet.FilterChainImpl.doFilter(FilterChainImpl.java:71) 
    at com.liferay.portlet.CheckboxParametersPortletFilter.doFilter(CheckboxParametersPortletFilter.java:57) 
    at com.liferay.portlet.FilterChainImpl.doFilter(FilterChainImpl.java:68) 
    at com.liferay.portlet.CheckboxParametersPortletFilter.doFilter(CheckboxParametersPortletFilter.java:57) 
    at com.liferay.portlet.FilterChainImpl.doFilter(FilterChainImpl.java:68) 
    at com.liferay.portal.kernel.portlet.PortletFilterUtil.doFilter(PortletFilterUtil.java:48) 
    at com.liferay.portal.kernel.servlet.PortletServlet.service(PortletServlet.java:105) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
    at com.liferay.portal.osgi.web.wab.extender.internal.adapter.ServletExceptionAdapter.service(ServletExceptionAdapter.java:68) 
    at org.eclipse.equinox.http.servlet.internal.registration.EndpointRegistration.service(EndpointRegistration.java:153) 
    at org.eclipse.equinox.http.servlet.internal.servlet.FilterChainImpl.doFilter(FilterChainImpl.java:50) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:119) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilter.doFilter(InvokerFilter.java:115) 
    at com.liferay.portal.osgi.web.wab.extender.internal.adapter.FilterExceptionAdapter.doFilter(FilterExceptionAdapter.java:46) 
    at org.eclipse.equinox.http.servlet.internal.registration.FilterRegistration.doFilter(FilterRegistration.java:121) 
    at org.eclipse.equinox.http.servlet.internal.servlet.FilterChainImpl.doFilter(FilterChainImpl.java:45) 
    at org.eclipse.equinox.http.servlet.internal.servlet.ResponseStateHandler.processRequest(ResponseStateHandler.java:70) 
    at org.eclipse.equinox.http.servlet.internal.context.DispatchTargets.doDispatch(DispatchTargets.java:117) 
    at org.eclipse.equinox.http.servlet.internal.servlet.RequestDispatcherAdaptor.include(RequestDispatcherAdaptor.java:48) 

これをどのように解決するか?

+0

ポートレットのwarファイルにnewService-apiがありますか。 – YuVi

+0

なぜ 'Comp Comp = CompLocalServiceUtil.createComp(3);'を使うのですか?あなたは 'CompImpl'でオーバーライドされたメソッドを実装しましたか? – German

+0

よく、newService-apiは実際に私が知っている限り、ポートレットではなくosgiから呼び出されることになっています。 CompImplについては、実際にはありませんでした。 –

答えて

0

私はこれをコメントとして書きたいと思っていましたが、長すぎるので、回答として投稿することはできません。

あなたはEnitityを作成し、すべてのpersistense/model/etcの処理はServiceBuilderによって行われます。 Liferay 7では、これはapiとserviceという2つのモジュールで表されます。 Mavenの "ビルド"とサービスビルダーの "ビルドサービス"の後に、CompLocalServiceUtil.deleteComp()などのデフォルトのcrudメソッドを使用することができます。そして、CompLocalServiceUtil.createComp(3)を使用すると書いてあります。つまり、CompLocalServiceImpl.javaファイルの既定のメソッドを既にオーバーライドしています。本当ですか?そうでなければ、それはまさにあなたがあなたの誤りを持っている理由です。あなたは私はあなたを誤解かもしれませCompImpl.java

を変更する必要があります -

あなたがあなた自身のビジネス・ロジックを追加したい場合 - あなたはあなた自身のモデルを追加したい場合は、変更された(と構築サービスを再び)する必要がありCompLocalServiceImpl、。

+0

もう一度お返事いただき、ありがとうございます。 ああ、私はあなたが何を意味するかを見ています。サービスビルダーによって生成された厄介なメソッドを変更しないでください。生成されると直ちに変更せずにそのまま使用します。 –

関連する問題