我们已经实现了一个从GWT客户端登录服务器异常的通用机制.当然,其中一些是意外的异常(例如NPE),因此我们在日志中获得了这些堆栈跟踪(摘录):
java.lang.Throwable: One or more exceptions caught, see full set in UmbrellaException#getCauses
at Unknown.Hq(Unknown Source)
at Unknown.ihb(Unknown Source)
at Unknown.anonymous(Unknown Source)
at Unknown.anonymous(Unknown Source)
at Unknown.anonymous(Unknown Source)
Caused by: java.lang.Throwable: (TypeError): d is null
stack: EG([object Object],[object Object])@http://domain/path/0B15791BA99231E6B88EAF3BDE38EB64.cache.html:3282
fileName: http://domain/path/0B15791BA99231E6B88EAF3BDE38EB64.cache.html
lineNumber: 3282
at Unknown.EG(Unknown Source)
at Unknown.DG(Unknown Source)
如何在原始java源代码中找到类和行号?
我不想部署详细的编译版本,因为我没有关于确切场景的信息,我无法重现异常.
GWT编译器输出符号映射文件中的映射-deploy和-extra位置(-deploy默认为-war's WEB-INF/deploy,-extra默认情况下不发出).
我手动使用它来不时地调试奇怪的东西.
您还可以使用以编程方式对跟踪进行反混淆处理StackTraceDeobfuscator.
仅供参考,此类由RemoteLoggingServiceImplGWT-RPC servlet和LoggingRequestFactory服务使用; 分别由SimpleRemoteLogHandler和调用RequestFactoryLogHandler(它们java.util.logging.LogHandler可以与GWT支持的日志API一起使用).在这种情况下,它会查看WEB-INF/deploywebapp(这就是为什么-deploy默认存在).