【问题标题】:Migrating Java WEB, ZK, Spring project from non Maven to Maven将 Java WEB、ZK、Spring 项目从非 Maven 迁移到 Maven
【发布时间】:2019-05-03 19:52:30
【问题描述】:

我正在迁移到 Netbeans 上的 Maven,这是一个基于 Java 1.7 并在 glassfish 3 上运行的旧项目,该项目使用 Hibernate 4.3.1、Spring 3.0.6 和 ZK 6 作为接口部分。

我设法将所有以前的 jar 添加到 POM.xml 我还创建了 beans.xml 文件。所以项目编译没有错误,项目也启动正常,第一页(登录页面)正确打开。在日志中,我可以看到所有数据库访问工作正常,因此域和 businessImpl 也运行良好,但是当我登录时,应该加载的页面无法显示并出现以下错误:

Advertencia:   StandardWrapperValve[zkLoader]: Servlet.service() for servlet zkLoader threw exception
java.util.EmptyStackException
    at java.util.Stack.peek(Stack.java:102)
    at java.util.Stack.pop(Stack.java:84)
    at org.zkoss.bind.xel.zel.PathELResolver.getValue(PathELResolver.java:54)
    at org.zkoss.zel.CompositeELResolver.getValue(CompositeELResolver.java:67)
    at org.zkoss.xel.zel.XelELResolver.getValue(XelELResolver.java:72)
    at org.zkoss.bind.xel.zel.BindELResolver.getValue(BindELResolver.java:75)
    at org.zkoss.zel.impl.parser.AstValue.getValue(AstValue.java:179)
    at org.zkoss.zel.impl.ValueExpressionImpl.getValue(ValueExpressionImpl.java:189)
    at org.zkoss.xel.zel.ELXelExpression.evaluate(ELXelExpression.java:40)
    at org.zkoss.bind.impl.BindEvaluatorXImpl.getValue(BindEvaluatorXImpl.java:43)
    at org.zkoss.bind.impl.LoadPropertyBindingImpl.load(LoadPropertyBindingImpl.java:58)
    at org.zkoss.bind.impl.PropertyBindingHandler.doLoadBinding(PropertyBindingHandler.java:171)
    at org.zkoss.bind.impl.PropertyBindingHandler.doLoad(PropertyBindingHandler.java:372)
    at org.zkoss.bind.impl.BinderImpl.loadComponentProperties(BinderImpl.java:1804)
    at org.zkoss.bind.impl.BinderImpl.loadComponent(BinderImpl.java:1781)
    at org.zkoss.bind.BindComposer$BinderKeeper$Loader.load(BindComposer.java:468)
    at org.zkoss.bind.BindComposer$BinderKeeper.loadComponentForAllBinders(BindComposer.java:450)
    at org.zkoss.bind.BindComposer.doAfterCompose(BindComposer.java:174)
    at org.zkoss.zk.ui.impl.UiEngineImpl.doAfterCompose(UiEngineImpl.java:529)
    at org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild0(UiEngineImpl.java:824)
    at org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild(UiEngineImpl.java:770)
    at org.zkoss.zk.ui.impl.UiEngineImpl.execCreate0(UiEngineImpl.java:679)
    at org.zkoss.zk.ui.impl.UiEngineImpl.execCreate(UiEngineImpl.java:643)
    at org.zkoss.zk.ui.impl.UiEngineImpl.createComponents(UiEngineImpl.java:1024)
    at org.zkoss.zk.ui.impl.AbstractExecution.createComponents0(AbstractExecution.java:246)
    at org.zkoss.zk.ui.impl.AbstractExecution.createComponents(AbstractExecution.java:238)
    at org.zkoss.zul.Include.afterCompose(Include.java:448)
    at org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild0(UiEngineImpl.java:822)
    at org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild(UiEngineImpl.java:770)
    at org.zkoss.zk.ui.impl.UiEngineImpl.execCreate0(UiEngineImpl.java:679)
    at org.zkoss.zk.ui.impl.UiEngineImpl.execCreate(UiEngineImpl.java:643)
    at org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild0(UiEngineImpl.java:816)
    at org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild(UiEngineImpl.java:770)
    at org.zkoss.zk.ui.impl.UiEngineImpl.execCreate0(UiEngineImpl.java:679)
    at org.zkoss.zk.ui.impl.UiEngineImpl.execCreate(UiEngineImpl.java:643)
    at org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild0(UiEngineImpl.java:816)
    at org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild(UiEngineImpl.java:770)
    at org.zkoss.zk.ui.impl.UiEngineImpl.execCreate0(UiEngineImpl.java:679)
    at org.zkoss.zk.ui.impl.UiEngineImpl.execCreate(UiEngineImpl.java:643)
    at org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild0(UiEngineImpl.java:816)
    at org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild(UiEngineImpl.java:770)
    at org.zkoss.zk.ui.impl.UiEngineImpl.execCreate0(UiEngineImpl.java:679)
    at org.zkoss.zk.ui.impl.UiEngineImpl.execCreate(UiEngineImpl.java:643)
    at org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild0(UiEngineImpl.java:816)
    at org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild(UiEngineImpl.java:770)
    at org.zkoss.zk.ui.impl.UiEngineImpl.execCreate0(UiEngineImpl.java:679)
    at org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild(UiEngineImpl.java:741)
    at org.zkoss.zk.ui.impl.UiEngineImpl.execCreate0(UiEngineImpl.java:701)
    at org.zkoss.zk.ui.impl.UiEngineImpl.execCreate(UiEngineImpl.java:643)
    at org.zkoss.zk.ui.impl.UiEngineImpl.execNewPage0(UiEngineImpl.java:394)
    at org.zkoss.zk.ui.impl.UiEngineImpl.execNewPage(UiEngineImpl.java:316)
    at org.zkoss.zk.ui.http.DHtmlLayoutServlet.process(DHtmlLayoutServlet.java:214)
    at org.zkoss.zk.ui.http.DHtmlLayoutServlet.doGet(DHtmlLayoutServlet.java:135)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
    at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:318)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160)
    at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673)
    at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174)
    at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:416)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:283)
    at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459)
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167)
    at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:206)
    at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:180)
    at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235)
    at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:283)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:200)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:132)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:111)
    at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
    at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:536)
    at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:591)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:571)
    at java.lang.Thread.run(Thread.java:745)

在未加载页面的 ZK ViewModel 添加额外日志后,我可以确定错误发生在 ViewModel 的 init() 之后,这意味着当 ZK 尝试评估要显示的信息时,例如在 @bind或@load。这就解释了为什么登录页面加载,它是一个不显示动态信息的静态页面。

所以在迁移过程中,我一定错过了一些允许 ZK 和 Srping 交互的东西?

我希望在迁移中我错过了 Spring 或 ZK 的一些配置文件,但仅基于上面显示的错误,我的朋友 Google 并没有太大帮助... 有什么建议去哪里看吗?

编辑: 谢谢鹰!感谢您的 cmets,我设法确定了更多问题的根源。我删除了主页的全部内容并加载了它,当然,然后一个接一个地重新插入我得到相同错误的任何组件,所以基本上,任何@load 或@bind 都会触发此错误。现在,由于这个应用程序已经很老了,我有一些最初是在 ZK5 中开发的页面,没有视图模型(即:在 zul 中没有 apply="org.zkoss.bind.BindComposer",但是有 "use="ui.Class " 在 ZK 窗口标题中),因此在 zul 中没有任何 @load 或 @bind ,这些页面可以完美运行。所以问题肯定是 ZK 6 没有管理到 @load 或 @bind 任何东西。这是一个全局配置问题由于我错误地迁移到 MAVEN。

编辑2: 将项目迁移到 IntelliJ,使用 MAVEN 和相同的问题,编译,运行,但包括 @Load 或 @Bind 的 ZK 页面会产生相同的错误...

java.util.EmptyStackException
    at java.util.Stack.peek(Stack.java:102)
    at java.util.Stack.pop(Stack.java:84)
    at org.zkoss.bind.xel.zel.PathELResolver.getValue(PathELResolver.java:54)
    at org.zkoss.zel.CompositeELResolver.getValue(CompositeELResolver.java:67)
    at org.zkoss.xel.zel.XelELResolver.getValue(XelELResolver.java:72)
    at org.zkoss.bind.xel.zel.BindELResolver.getValue(BindELResolver.java:75)
    at org.zkoss.zel.impl.parser.AstValue.getValue(AstValue.java:179)
    at org.zkoss.zel.impl.ValueExpressionImpl.getValue(ValueExpressionImpl.java:189)
    at org.zkoss.xel.zel.ELXelExpression.evaluate(ELXelExpression.java:40)
    at org.zkoss.bind.impl.BindEvaluatorXImpl.getValue(BindEvaluatorXImpl.java:43)
    at org.zkoss.bind.impl.LoadPropertyBindingImpl.load(LoadPropertyBindingImpl.java:58)
    at org.zkoss.bind.impl.PropertyBindingHandler.doLoadBinding(PropertyBindingHandler.java:171)
    at org.zkoss.bind.impl.PropertyBindingHandler.doLoad(PropertyBindingHandler.java:372)
    at org.zkoss.bind.impl.BinderImpl.loadComponentProperties(BinderImpl.java:1804)
    at org.zkoss.bind.impl.BinderImpl.loadComponent(BinderImpl.java:1781)
    at org.zkoss.bind.BindComposer$BinderKeeper$Loader.load(BindComposer.java:468)
    at org.zkoss.bind.BindComposer$BinderKeeper.loadComponentForAllBinders(BindComposer.java:450)
    at org.zkoss.bind.BindComposer.doAfterCompose(BindComposer.java:174)
    at org.zkoss.zk.ui.impl.UiEngineImpl.doAfterCompose(UiEngineImpl.java:529)
    at org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild0(UiEngineImpl.java:824)
    at org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild(UiEngineImpl.java:770)
    at org.zkoss.zk.ui.impl.UiEngineImpl.execCreate0(UiEngineImpl.java:679)
    at org.zkoss.zk.ui.impl.UiEngineImpl.execCreate(UiEngineImpl.java:643)
    at org.zkoss.zk.ui.impl.UiEngineImpl.createComponents(UiEngineImpl.java:1024)
    at org.zkoss.zk.ui.impl.AbstractExecution.createComponents0(AbstractExecution.java:246)
    at org.zkoss.zk.ui.impl.AbstractExecution.createComponents(AbstractExecution.java:238)
    at org.zkoss.zul.Include.afterCompose(Include.java:448)
    at org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild0(UiEngineImpl.java:822)
    at org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild(UiEngineImpl.java:770)
    at org.zkoss.zk.ui.impl.UiEngineImpl.execCreate0(UiEngineImpl.java:679)
    at org.zkoss.zk.ui.impl.UiEngineImpl.execCreate(UiEngineImpl.java:643)
    at org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild0(UiEngineImpl.java:816)
    at org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild(UiEngineImpl.java:770)
    at org.zkoss.zk.ui.impl.UiEngineImpl.execCreate0(UiEngineImpl.java:679)
    at org.zkoss.zk.ui.impl.UiEngineImpl.execCreate(UiEngineImpl.java:643)
    at org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild0(UiEngineImpl.java:816)
    at org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild(UiEngineImpl.java:770)
    at org.zkoss.zk.ui.impl.UiEngineImpl.execCreate0(UiEngineImpl.java:679)
    at org.zkoss.zk.ui.impl.UiEngineImpl.execCreate(UiEngineImpl.java:643)
    at org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild0(UiEngineImpl.java:816)
    at org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild(UiEngineImpl.java:770)
    at org.zkoss.zk.ui.impl.UiEngineImpl.execCreate0(UiEngineImpl.java:679)
    at org.zkoss.zk.ui.impl.UiEngineImpl.execCreate(UiEngineImpl.java:643)
    at org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild0(UiEngineImpl.java:816)
    at org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild(UiEngineImpl.java:770)
    at org.zkoss.zk.ui.impl.UiEngineImpl.execCreate0(UiEngineImpl.java:679)
    at org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild(UiEngineImpl.java:741)
    at org.zkoss.zk.ui.impl.UiEngineImpl.execCreate0(UiEngineImpl.java:701)
    at org.zkoss.zk.ui.impl.UiEngineImpl.execCreate(UiEngineImpl.java:643)
    at org.zkoss.zk.ui.impl.UiEngineImpl.execNewPage0(UiEngineImpl.java:394)
    at org.zkoss.zk.ui.impl.UiEngineImpl.execNewPage(UiEngineImpl.java:316)
    at org.zkoss.zk.ui.http.DHtmlLayoutServlet.process(DHtmlLayoutServlet.java:214)
    at org.zkoss.zk.ui.http.DHtmlLayoutServlet.doGet(DHtmlLayoutServlet.java:135)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669)
    at org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:201)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577)
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
    at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:215)
    at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:110)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
    at org.eclipse.jetty.server.Server.handle(Server.java:499)
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)
    at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:258)
    at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
    at java.lang.Thread.run(Thread.java:745)

【问题讨论】:

  • 根据堆栈跟踪,它与解析数据绑定表达式有关。如果您可以找到导致错误的表达式,那将很有帮助。您可以一个一个地删除数据绑定,直到找到有问题的那个。
  • 如果我发布 web.xml、applicationContext.xml 和 dispatcher-servlet.xml 会有帮助吗?它们适用于非 Maven 项目,但在 Maven 上下文中运行时可能需要对其进行编辑...

标签: spring maven spring-mvc java-7 zk


【解决方案1】:

解决方案发现,问题来自 ZK 的 EL 绑定注释,我检查了 pom.xml 的版本,发现不一致。即使非 maven 项目在 pom 中指定的 zk 库版本运行良好,我将 ZKEL 依赖项更改为更新的依赖项并且它可以工作。感谢 Hawk 让我走上正轨。

【讨论】:

    【解决方案2】:

    您应该添加具有相同版本的 ZK 相关 jar,例如zkmax、zul、zk 和 zel。由于你使用的是 Maven,如果你只指定 zkmax 或 zkex,Maven 会自动包含相同版本的依赖项(如果你不覆盖它)。

    请参考https://www.zkoss.org/wiki/ZK_Installation_Guide/Setting_up_IDE/Maven/Resolving_ZK_Framework_Artifacts_via_Maven#ZK_EE

    【讨论】:

      猜你喜欢
      • 2015-09-21
      • 2020-09-29
      • 2016-12-08
      • 2021-07-02
      • 1970-01-01
      • 2022-07-19
      • 2011-10-13
      • 2020-04-08
      • 1970-01-01
      相关资源
      最近更新 更多