gpt4 book ai didi

liferay - 启动 liferay

转载 作者:行者123 更新时间:2023-12-02 05:08:55 28 4
gpt4 key购买 nike

我在 liferay 工作。我们在我们的项目中使用一个模块来创建 liferay 主题。我使用命令 ant -Ddeploy.war=true 将它部署在服务器中。 war 文件在 liferay 部署文件夹中创建。但是当我启动服务器时,我没有获得任何登录选项。我没有得到任何特定于 liferay 的选项。我得到以下服务器日志

An error occurred at line: 117 in the jsp file: /html/portlet/login/login.jsp
com.alepo.hooks.ConcurrentLoginException cannot be resolved to a type
114: <liferay-ui:error exception="<%= UserLockoutException.class %>" message="this-account-has-been-locked" />
115: <liferay-ui:error exception="<%= UserPasswordException.class %>" message="please-enter-a-valid-password" />
116: <liferay-ui:error exception="<%= UserScreenNameException.class %>" message="please-enter-a-valid-screen-name" />
117: <liferay-ui:error exception="<%= com.alepo.hooks.ConcurrentLoginException.class %>" message="max-sessions-exceeded" />
118:
119: <fieldset class="block-labels">
120: <div class="ctrl-holder">


Stacktrace:
at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:93)
at org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330)
at org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:451)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:328)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:307)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:295)
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:565)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:311)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:308)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:259)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:679)
at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:584)
at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:497)
at com.liferay.taglib.util.IncludeTag.doEndTag(IncludeTag.java:67)
at org.apache.jsp.html.common.themes.portlet_jsp._jspService(portlet_jsp.java:2669)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)

有什么想法吗?

最佳答案

看来您的自定义登录 Hook 搞砸了,这不是主题的问题。

如果你仔细阅读错误:

An error occurred at line: 117 in the jsp file: /html/portlet/login/login.jsp com.alepo.hooks.ConcurrentLoginException cannot be resolved to a type

所以发生的事情是 /html/portlet/login/login.jsp 找不到类 ConcurrentLoginException 可能驻留在你的钩子(Hook)中,为什么这个发生这种情况是因为 liferay 处理类加载的方式。

简而言之,有3个类加载器:

  1. global(服务器库中的类,如tomcat/ext/lib,如数据库驱动程序和portal-service.jar):这些类可以被所有插件上下文和 liferay 的上下文使用并且可用。
  2. Portal classloader(ROOT/WEB-INF/lib中的类,如著名的portal-impl.jar):这些类或实现仅适用于 Liferay 的上下文。
  3. Portlet/Plugin ClassLoader(加载我们插件的类):这些可用于我们的插件(portlet、 Hook 等),但不可用于 liferay 的模块/上下文。

所以在这个简短的速成类(class)之后你可能已经知道问题是什么,但我仍然会尝试回答这个问题(为了分数:-)。

所以在这里,因为 JSP Hook 修改了 liferay 的 JSP 并被复制到 ROOT 目录,它属于 liferay 的上下文,所以在插件(portlet 或 Hook 或主题)中创建的任何自定义类) 对 JSP 不可用,因此在本例中为 login.jsp

所以要么不要在 JSP 中使用该类 ;-) 要么将您的异常类(打包在 jar 中)放在全局路径中,即 tomcat/ext/lib 以便它可用到 login.jsp

这是 verdict from Liferay Staff在类似的问题和另一个answer这可能有助于将概念带回家并在未来有所帮助。

关于liferay - 启动 liferay,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15830961/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com