Liferay:在* LocalServiceUtil中找不到* LocalServiceImpl编写的任何方法

时间:2013-11-28 07:36:44

标签: java spring liferay liferay-6 liferay-ide

*LocalServiceImpl中找不到我在*LocalServiceUtil中编写的任何方法。我每次都重新运行服务构建器而没有任何东西。这些方法在本地服务器上可识别,但在生产服务器中找不到。所有旧方法都有效,只找不到新的书面方法。可能是什么问题呢?谢谢。我在两台服务器上都使用Liferay 6.1.1 GA2。

这是我的服务构建器日志

     [echo] Loading jar:file:/C:/sbl-workspace-1/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/webapps/ROOT/WEB-INF/lib/portal-impl.jar!/system.properties
     [echo] 28.11.2013 08:30:46 com.liferay.portal.kernel.log.Jdk14LogImpl info
     [echo] INFO: Global shared lib directory /C:/sbl-workspace-1-plugins-sdk/liferay-plugins-sdk-6.1.1/lib/
     [echo] 28.11.2013 08:30:46 com.liferay.portal.kernel.log.Jdk14LogImpl info
     [echo] INFO: Global lib directory /C:/sbl-workspace-1/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/lib/ext/
     [echo] 28.11.2013 08:30:46 com.liferay.portal.kernel.log.Jdk14LogImpl info
     [echo] INFO: Portal lib directory /C:/sbl-workspace-1/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/webapps/ROOT/WEB-INF/lib/
     [echo] 28.11.2013 08:30:47 com.liferay.portal.kernel.log.Jdk14LogImpl info
     [echo] INFO: Properties for portal loaded from [file:/C:/sbl-workspace-1/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/webapps/ROOT/WEB-INF/classes/portal-ext.properties, jar:file:/C:/sbl-workspace-1/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/webapps/ROOT/WEB-INF/lib/portal-impl.jar!/com/liferay/portal/tools/dependencies/portal-tools.properties, jar:file:/C:/sbl-workspace-1/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/webapps/ROOT/WEB-INF/lib/portal-impl.jar!/portal.properties]
     [echo] Loading jar:file:/C:/sbl-workspace-1/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/webapps/ROOT/WEB-INF/lib/portal-impl.jar!/portal.properties
     [echo] Loading jar:file:/C:/sbl-workspace-1/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/webapps/ROOT/WEB-INF/lib/portal-impl.jar!/com/liferay/portal/tools/dependencies/portal-tools.properties
     [echo] Loading file:/C:/sbl-workspace-1/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/webapps/ROOT/WEB-INF/classes/portal-ext.properties
     [echo] Building Menus
     [echo] Building MenusImages
     [echo] Building Sections
    [mkdir] Created dir: C:\sbl-workspace-1-plugins-sdk\liferay-plugins-sdk-6.1.1\portlets\AdminSBL-portlet\docroot\WEB-INF\service-classes
    compile-java:
     [copy] Copied 65 empty directories to 65 empty directories under C:\sbl-workspace-1-plugins-sdk\liferay-plugins-sdk-6.1.1\portlets\AdminSBL-portlet\docroot\WEB-INF\service-classes
    [javac] Compiling 398 source files to C:\sbl-workspace-1-plugins-sdk\liferay-plugins-sdk-6.1.1\portlets\AdminSBL-portlet\docroot\WEB-INF\service-classes
      [zip] Building zip: C:\sbl-workspace-1-plugins-sdk\liferay-plugins-sdk-6.1.1\portlets\AdminSBL-portlet\docroot\WEB-INF\lib\AdminSBL-portlet-service.jar
      [delete] Deleting directory C:\sbl-workspace-1-plugins-sdk\liferay-plugins-sdk-6.1.1\portlets\AdminSBL-portlet\docroot\WEB-INF\service-classes
      BUILD SUCCESSFUL
      Total time: 37 seconds

解决:它像yannicular和Pankaj Kathiriya说的那样。感谢.....

4 个答案:

答案 0 :(得分:3)

最有可能的是,您的服务构建失败了。您仍然可以看到旧方法,因为您仍在使用旧的.jar,这是最后一个成功构建的方法。我的建议是检查构建服务日志并找到服务构建任务失败的错误

编辑:有时,来自Portal部署机制的冲突或动态类加载可能导致从旧服务jar加载类。如果您确定您的Web应用程序合法但部署失败,则确保部署应用程序的故障安全过程是:

  1. 关闭门户网站
  2. 从门户网站webapps中删除app文件夹。
  3. 从work / Catalina / localhost
  4. 删除app文件夹
  5. 将新的webapp复制到/ deploy并启动门户网站。
  6. Bonus提示:如果要部署到正在运行的远程Portal中,最好将.war复制到远程系统中,然后将其移至/ deploy文件夹。否则,如果您的连接速度很慢,则部署可能会在.war传输完成之前启动,但是,在您重新启动tomcat之前,您的应用程序将保持黑名单

答案 1 :(得分:0)

你能检查你的方法的可见性:它们是公开的吗?

服务构建器仅为* LocalServiceImpl。

的公共方法创建* LocalServiceUtil方法

查看您的* LocalServiceImpl方法以了解正在发生的事情会很有用。

答案 2 :(得分:0)

那么你应该删除在构建服务时创建的service.jar。 现在再次构建service.xml并检查你的方法是否会在util class下填充。

如果多个portlet共享该文件,请尝试将该.jar文件放在Tomcat_home \ lib \ ext下。

答案 3 :(得分:0)

这是一个老问题,但仍然没有接受答案。正如this question提到了这个老问题,它引起了我的注意。万一其他人偶然发现它,这是对可能出错的最新猜测(从我对另一个问题的回答):

首先:检查*LocalServiceUtil的源代码,确保它确实没有方法的实现。如果方法在那里,你将不得不寻找其他地方。这里是:

部署portlet时,可以通过多种方式获取API:有人可能在tomcat的全局类路径上部署了包含服务的插件。如果您没有更新那个,则可能无法看到您的更新。

此外,有人可能已将您的插件的旧版本复制到他们自己的插件中 - 除非他们更新其依赖项,否则自然不会看到任何更新。检查jar文件的更改名称。还要检查类:有些人喜欢将已编译的java类添加到其源目录中,最后会使用相同代码的两个不同实现。