GWT - 仅在 Edge 浏览器中获取 UmbrellaException



我目前正在与GWT合作一个项目,我仍然有点陌生。当我注意到仅在 Edge 浏览器中显示不正确时,我正在测试我的代码。在查看日志时,我看到了很多这些错误:

com.google.gwt.event.shared.UmbrellaException: Exception caught: For input string: "176px"

所以我用谷歌搜索了一下,注意到了这篇文章:

做什么?

所以我试图将其添加到我的代码中,但这并不能解决我的问题。我仍然得到伞异常,并且 UI 仍然在 Edge 中显示不正确。

我的 html 文件的一部分:

<!doctype html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">

<link type="text/css" rel="stylesheet/less" href="xxxxx.less"/>
<!--[if IE 9]>
<link type="text/css" rel="stylesheet/less" href="ie9.less">
<![endif]-->

<title>xxx</title>
<!-- Translations -->
<script type="text/javascript" src="translations/languages.js"></script>
<script type="text/javascript" src="js/less-1.7.5.min.js"></script>
<script type="text/javascript" src="xxxWebApp/xxxWebApp.nocache.js">
</script>
<script type="text/javascript" src="jquery/jquery.min.js"></script>
<script type="text/javascript" src="jquery/jquery-ui.min.js"></script>
<script type="text/javascript" src="js/application.js"></script>
</head>

所以我尝试在另一个元标记下添加<meta http-equiv="X-UA-Compatible" content="IE=edge">。但这似乎行不通。我相信我没有正确添加该标签。但我尝试了不同的变体,例如:

<meta http-equiv="X-UA-Compatible" content="text/html; charset=UTF-8; IE=edge">

但仍然没有结果。有人可以如何正确添加该标签,或者什么可能导致仅在Edge浏览器中出现UmbrelllaException。

更新:下面是一个完整堆栈跟踪的示例:

com.google.gwt.event.shared.UmbrellaException: Exception caught: For input string: "176px"
at sun.reflect.GeneratedConstructorAccessor24.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.instantiate(ServerSerializationStreamReader.java:1110)
at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.deserialize(ServerSerializationStreamReader.java:682)
at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.readObject(ServerSerializationStreamReader.java:592)
at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader$ValueReader$8.readValue(ServerSerializationStreamReader.java:149)
at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.deserializeValue(ServerSerializationStreamReader.java:434)
at com.google.gwt.user.server.rpc.RPC.decodeRequest(RPC.java:312)
at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:296)
at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:373)
at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:841)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1634)
at com.nedap.retail.rheas.modules.systemconfig.GWTCacheControlFilter.doFilter(GWTCacheControlFilter.java:35)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1613)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:541)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:190)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1592)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:188)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1239)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:168)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:481)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1561)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:166)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1141)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)
at com.nedap.retail.rheas.core.webserver.WebServerManager$WebServerHandler.handle(WebServerManager.java:137)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
at org.eclipse.jetty.server.Server.handle(Server.java:564)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:320)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:251)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:279)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:110)
at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:124)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:672)
at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:590)
at java.lang.Thread.run(Unknown Source)

提前谢谢。

我无法评论为什么错误只在 Edge 上;我的印象是你应该在任何地方都得到它(或者也许 Edge 对似乎是错误的输入不太宽容)。

但是,关于错误本身:

  • 看起来这是由于您以"176px"的形式指定一个值而它应该只是"176"这一事实引起的;此值可以是元素的宽度、元素的高度或其他值;您可能会很幸运,项目中的简单文本搜索可能会指向正确的位置(按值"176"搜索)
  • 如果上述方法不起作用,那么您需要更好地了解问题; 使用-style PRETTY启动开发模式,并(可能是递归地)使用UmbrellaException#getCauses返回的原因在某处打印UmbrellaException的堆栈跟踪及其原因的堆栈跟踪(可能使用此处的建议)。

好的,我真的不知道是什么导致了问题,但是将GWT从2.8.0版本更新到2.8.1解决了问题。

希望我用这个遮阳篷为其他人省去一些麻烦。

最新更新