有人能够在 Websphere Liberty Profile 8.5.5.7 上 运行 Wicket 7.0.0 吗?

Has anybody been able to run Wicket 7.0.0 on Websphere Liberty Profile 8.5.5.7?

我一直在尝试 运行 原型示例和我正在尝试从 6.5 升级到 7.0.0 的另一个项目,但我没有这样做。

原型示例 运行在 jetty 上没问题,我尝试升级的项目运行在 jetty 和 8.5.5.7 上都没问题,但在更改依赖项后我不断得到下面的异常,我不太确定它是否是配置问题(因为 6.5 一切正常),wicket 7.0.0 因为异常来自内部 wicket 或 WAS8.5.5.7。

[ERROR ] SRVE0271E: Uncaught init() exception created by servlet [wicket-servlet] in application [blahblah]: javax.servlet.ServletException: java.lang.ClassCastException: com.ibm.ws.artifact.url.internal.WSJarURLStreamHandler$WSJarURLConnectionImpl cannot be cast to java.net.JarURLConnection at org.apache.wicket.protocol.http.WicketFilter.init(WicketFilter.java:455) at org.apache.wicket.protocol.http.WicketServlet.init(WicketServlet.java:271) at javax.servlet.GenericServlet.init(GenericServlet.java:244) at com.ibm.ws.webcontainer.servlet.ServletWrapper.init(ServletWrapper.java:332) at [internal classes] Caused by: java.lang.ClassCastException: com.ibm.ws.artifact.url.internal.WSJarURLStreamHandler$WSJarURLConnectionImpl cannot be cast to java.net.JarURLConnection at org.apache.wicket.Application.collectWicketProperties(Application.java:503) at org.apache.wicket.Application.initializeComponents(Application.java:593) at org.apache.wicket.Application.initApplication(Application.java:918) at org.apache.wicket.protocol.http.WicketFilter.init(WicketFilter.java:429) ... 4 more [ERROR ] SRVE0315E: An exception occurred: java.lang.Throwable: javax.servlet.ServletException: java.lang.ClassCastException: com.ibm.ws.artifact.url.internal.WSJarURLStreamHandler$WSJarURLConnectionImpl cannot be cast to java.net.JarURLConnection at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:4900) at [internal classes] Caused by: javax.servlet.ServletException: java.lang.ClassCastException: com.ibm.ws.artifact.url.internal.WSJarURLStreamHandler$WSJarURLConnectionImpl cannot be cast to java.net.JarURLConnection at org.apache.wicket.protocol.http.WicketFilter.init(WicketFilter.java:455) at org.apache.wicket.protocol.http.WicketServlet.init(WicketServlet.java:271) at javax.servlet.GenericServlet.init(GenericServlet.java:244) at com.ibm.ws.webcontainer.servlet.ServletWrapper.init(ServletWrapper.java:332) ... 1 more Caused by: java.lang.ClassCastException: com.ibm.ws.artifact.url.internal.WSJarURLStreamHandler$WSJarURLConnectionImpl cannot be cast to java.net.JarURLConnection at org.apache.wicket.Application.collectWicketProperties(Application.java:503) at org.apache.wicket.Application.initializeComponents(Application.java:593) at org.apache.wicket.Application.initApplication(Application.java:918) at org.apache.wicket.protocol.http.WicketFilter.init(WicketFilter.java:429) ... 4 more

更新------------- 从 wicket 7.1.0 开始,不再有问题。 正如@klopfdreh 回答中提到的,存在兼容性问题,我接受该回答,因为我认为评论中的讨论可能帮助了 wicket 团队 fix/pinpoint 7.1.0 版本中的问题。

这只是一个假设,但看起来问题似乎与这个问题很接近:

https://bugs.eclipse.org/bugs/show_bug.cgi?id=430180

根据一条评论,您能否尝试在 "jvm.options" 中设置以下选项:

-Dcom.ibm.websphere.persistence.DisableJpaFormatUrlProtocol=true

为了在不禁用 "wsjar" 协议的情况下实现它,我们需要更多关于 "WSJarURLConnectionImpl" 实现的输入 - 从 "JarURLConnection" 调用的唯一方法是 "getJarFile()",所以这里的问题是:"WSJarURLConnectionImpl" 是否也提供此方法并且 returns 它是一个 JarFile?那么我们可能会在这个地方使用反射。