0

私は Liferay と Salesforce に取り組んでいます。私は Liferay を初めて使用し、時間を費やしすぎた問題に直面しています。

Service Builder (「newService」という名前) を作成することにしたポートレットがあります。ここに私の service.xml があります:

<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 コマンドを実行します。アーティファクトmvn service-builder:buildが生成されました。newService-api

次のように、ポートレット内でサービスを呼び出しています。

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

newservice-apiポートレットの pom.xml に依存関係を追加しました。

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

ポートレットを起動すると、次のエラーが発生します。

    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)

これを解決する方法はありますか?

4

1 に答える 1

0

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

あなたはエンティティを作成し、すべての永続化/モデル/その他のものは ServiceBuilder によって行われます。Liferay 7 では、API とサービスの 2 つのモジュールで表されます。maven の「build」と servicebuilder の「build-service」の後、 などのデフォルトの crud メソッドを使用できますCompLocalServiceUtil.deleteComp()。そして、使用することを書いています。これは、ファイル内CompLocalServiceUtil.createComp(3)のデフォルトのメソッドを既にオーバーライドしていることを意味しCompLocalServiceImpl.javaます。本当ですか?そうでない場合は、まさにそれがエラーの理由です。

独自のビジネス ロジックを追加する場合は、変更する必要があります (そして、サービスを再度ビルドする必要があります) CompLocalServiceImpl。独自のモデルを追加する場合は、変更する必要があります。CompImpl.java

私はあなたを誤解しているだけかもしれません。

于 2017-06-13T09:40:22.307 に答える