Liferay DXP 7.2 监听器无法启动(干净版)

Posted

技术标签:

【中文标题】Liferay DXP 7.2 监听器无法启动(干净版)【英文标题】:Liferay DXP 7.2 listeners failed to start (clean version) 【发布时间】:2020-03-18 09:20:25 【问题描述】:

Liferay DXP 7.2 无法使用 OpenJDK 启动(干净版本)。没有使用任何IDE,它是Windows Server 2016版本(不要认为服务器版本会有任何问题)刚刚在E:\PROJECT_NAME\liferay-dxp-tomcat-7.2.10.1-sp1-slim-20191009103614075\liferay-dxp-7.2.10.1-sp1\tomcat-9.0.17\bin下启动了startup.bat。检查环境变量(JAVA_HOME:C:\openjdk-13.0.1_windows-x64_bin\jdk-13.0.1)。看起来缺少任何依赖项或配置。需要帮助。

22-Nov-2019 09:43:37.490 INFO [main] org.apache.catalina.startup.Catalina.load Server initialization in [1,281] milliseconds
Loading jar:file:/E:/PROJECT_NAME/liferay-dxp-tomcat-7.2.10.1-sp1-slim-20191009103614075/liferay-dxp-7.2.10.1-sp1/tomcat-9.0.17/webapps/ROOT/WEB-INF/lib/portal-impl.jar!/system.properties
22-Nov-2019 09:43:40.912 SEVERE [main] org.apache.catalina.core.StandardContext.listenerStart Error configuring application listener of class [com.liferay.portal.spring.context.PortalContextLoaderListener]
 java.lang.ExceptionInInitializerError
        at com.liferay.petra.reflect.ReflectionUtil.<clinit>(ReflectionUtil.java:162)
        at com.liferay.portal.spring.context.PortalContextLoaderListener.<clinit>(PortalContextLoaderListener.java:460)
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
        at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481)
        at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:151)
        at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4604)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5150)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:713)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:690)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:695)
        at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:631)
        at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1832)
        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
        at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:118)
        at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:526)
        at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:425)
        at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1577)
        at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:309)
        at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123)
        at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:424)
        at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:367)
        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:929)
        at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:831)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1377)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1367)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
        at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:140)
        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:902)
        at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
        at org.apache.catalina.core.StandardService.startInternal(StandardService.java:423)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
        at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:928)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:634)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:567)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:350)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:492)
Caused by: java.lang.NoSuchFieldException: modifiers
        at java.base/java.lang.Class.getDeclaredField(Class.java:2412)
        at com.liferay.petra.reflect.ReflectionUtil.<clinit>(ReflectionUtil.java:157)
        ... 48 more```


【问题讨论】:

【参考方案1】:

错误是由于 JDK 设置不兼容造成的。所以需要换成兼容的JDK。 例如:JDK8 适用于 liferay-ce-portal-tomcat-7.2.1-ga2。

在 Windows 中: 将 JAVA_HOME 设置为 JDK 文件夹路径,将 PATH 设置为 JDK/bin 文件夹路径。 通过打开新的命令行窗口重新启动tomcat,它应该可以工作了。

【讨论】:

【参考方案2】:

如果您查看 Liferay DXP compatibility matrix,您会发现 Java 13 不在其中 - 只有 LTS 版本。使用兼容版本运行以消除此问题。请注意,仅支持 TCK 认证的 OpenJDK 构建,您可能需要在版本之上进行验证。

【讨论】:

是的。我使用了JDK8,它对我有用,谢谢。另外,您对 TCK 认证的 OpenJDK 有任何想法吗?我阅读了几篇文章,但仍然没有找到哪个 OpenJDK 版本/构建是 TCK 认证的,它将与 Liferay DXP 兼容。根据 Liferay DXP 兼容性矩阵,Java 11 和 Java 8 的所有 Java Technical Compatibility Kit (TCK) 兼容版本都应该没问题。 嗨@AritraDB - 您应该使用您选择的 OpenJDK 找到 TCK 信息(如果您的 JDK 已通过认证)。另外,很高兴知道它对您有用 - 考虑接受答案,因为它解决了您的问题

以上是关于Liferay DXP 7.2 监听器无法启动(干净版)的主要内容,如果未能解决你的问题,请参考以下文章

如何在 mvc-portlet 中使用 slf4j 记录器而不是内置 Liferay DXP 7.2 记录器?

如何将 Liferay DXP 与 Apache POI 集成?

Liferay 7:Liferay DXP解决方案

Liferay dxp 7.3:如何添加第三方jars进行全局共享?

Liferay 7:Liferay DXP全套教程内附源码

如何在 Liferay DXP 中添加语言图标