钩子正在部署时ClassNotFoundException LoginAction

时间:2014-02-26 16:09:29

标签: java liferay-6

我使用hook来覆盖默认的LoginAction通过钩子。

但是我得到了这个例外:

  

引起:java.lang.ClassNotFoundException:com.liferay.portlet.login.action.LoginAction

我就是这样做的:

的liferay-hook.xml

<?xml version="1.0"?>
<!DOCTYPE hook PUBLIC "-//Liferay//DTD Hook 6.1.0//EN" "http://www.liferay.com/dtd/liferay-hook_6_1_0.dtd">

<hook>
   <struts-action>
    <struts-action-path>/login/login</struts-action-path>
    <struts-action-impl>com.liferay.samplehook.action.SampleStrutsAction</struts-action-impl> 
    </struts-action>
</hook>

2 个答案:

答案 0 :(得分:2)

您不能从插件钩子引用portal-impl类。

您应该从您的案例中的portal-service扩展BaseStrutsPortletAction.java。

您可以参考sample-struts-action-hook

此致

答案 1 :(得分:1)

此错误也有NoClassDefFoundError。这是一个解释。希望这可以帮助。

  1. java.lang.ClassNotFoundException 此异常表示在类路径中找不到该类。这表明我们正在尝试加载类定义,并且该类在类路径中不存在。
  2. java.lang.NoClassDefFoundError 此异常表示JVM在其内部类定义数据结构中查找了类的定义但未找到它。这与说它无法从类路径加载不同。通常这表明我们之前尝试从类路径加载一个类,但由于某种原因它失败了 - 现在我们正在尝试再次使用该类(因此需要加载它,因为它上次失败了),但是我们'甚至没有尝试加载它,因为我们之前没有加载它(并且合理地怀疑我们会再次失败)。较早的失败可能是ClassNotFoundException或ExceptionInInitializerError(表示静态初始化块中的失败)或任何其他问题。关键是,NoClassDefFoundError不一定是类路径问题。