为什么当我尝试 运行 已部署的 zk war 时得到 java.lang.ClassNotFoundException: org.zkoss.zk.ui.http.HttpSessionListener?
Why do I get java.lang.ClassNotFoundException: org.zkoss.zk.ui.http.HttpSessionListener when I try to run a deployed zk war?
我正在尝试 运行 使用 zk 框架和 Java 部署的 .war,在具有 tomcat 10 的 Debian 服务器中,但它没有工作。我查看文件/opt/tomcat/logd/localhost.2021-xx-xx.log中的日志时,出现错误信息如下:
java.lang.ClassNotFoundException: org.zkoss.zk.ui.http.HttpSessionListener
然后,我在互联网上进行了一些研究,找到了一个可能的解决方案 link https://forum.zkoss.org/question/97112/javalangclassnotfoundexception-orgzkosszkuihttphttpsessionlistener/,然后我按照建议做了。但是,错误继续出现。看来zk框架和服务端有冲突
我发现了两个可能导致此问题的潜在问题。
首先:
Tomcat 10 实施 Jakarta servlet(而不是 java servlet)。
构建应用程序时,请确保您使用的是正确的 ZK 版本。
最后一个 ZK 版本有两个版本:
- 9.6.0 : Java EE(tomcat 9 及以下)
- 9.6.0-Jakarta:Jakarta EE(tomcat 仅 10 个)
请参阅此处 the configuration guide。
请注意,如果您是 运行 tomcat 10 中 ZK 的 Java EE 版本,我希望您得到:
[org.zkoss.zk.ui.http.HttpSessionListener]
java.lang.NoClassDefFoundError: javax/servlet/ServletRequestAttributeListener
与您当前的问题位于同一位置,但不完全相同 :D
其次:如果你是通过maven或者gradle等依赖管理工具来解析你的依赖,有可能是你解析错了依赖。
我建议仔细检查已解决的依赖关系,以确保每个 ZK jar 都在同一版本中得到解决。
您的主声明可能有一个 ZK 版本,而另一个来自插件(例如 Keikai、ZK 电子表格或 ZK 图表)
以 Maven 为例,运行依赖树命令是了解已解决内容的好方法。
我正在尝试 运行 使用 zk 框架和 Java 部署的 .war,在具有 tomcat 10 的 Debian 服务器中,但它没有工作。我查看文件/opt/tomcat/logd/localhost.2021-xx-xx.log中的日志时,出现错误信息如下:
java.lang.ClassNotFoundException: org.zkoss.zk.ui.http.HttpSessionListener
然后,我在互联网上进行了一些研究,找到了一个可能的解决方案 link https://forum.zkoss.org/question/97112/javalangclassnotfoundexception-orgzkosszkuihttphttpsessionlistener/,然后我按照建议做了。但是,错误继续出现。看来zk框架和服务端有冲突
我发现了两个可能导致此问题的潜在问题。
首先: Tomcat 10 实施 Jakarta servlet(而不是 java servlet)。 构建应用程序时,请确保您使用的是正确的 ZK 版本。 最后一个 ZK 版本有两个版本:
- 9.6.0 : Java EE(tomcat 9 及以下)
- 9.6.0-Jakarta:Jakarta EE(tomcat 仅 10 个)
请参阅此处 the configuration guide。
请注意,如果您是 运行 tomcat 10 中 ZK 的 Java EE 版本,我希望您得到:
[org.zkoss.zk.ui.http.HttpSessionListener]
java.lang.NoClassDefFoundError: javax/servlet/ServletRequestAttributeListener
与您当前的问题位于同一位置,但不完全相同 :D
其次:如果你是通过maven或者gradle等依赖管理工具来解析你的依赖,有可能是你解析错了依赖。
我建议仔细检查已解决的依赖关系,以确保每个 ZK jar 都在同一版本中得到解决。
您的主声明可能有一个 ZK 版本,而另一个来自插件(例如 Keikai、ZK 电子表格或 ZK 图表)
以 Maven 为例,运行依赖树命令是了解已解决内容的好方法。