我正在使用GWT和GAE / Java构建一个Web应用程序。我在我的一个RPC调用中得到了一个onFailure(Throwable catch),所以我想我会打印出来。
我写了一些代码来调用一个打包在CharArrayPrintStream上的PrintWriter上的caught.printStackTrace(),然后我将它发送到日志。这是用ant javac编译的。但是,当我在ant devmode中运行它时,我收到一个错误,Throwable.printStackTrace()无法接受PrintWriter,而是需要一个PrintStream。这很奇怪,因为(1)ant javac编译和(2)Throwable的API说你可以调用printStackTrace()并将它传递给PrintStream。
我唯一能想到的是,devmode和javac一起使用的库版本之间肯定存在一些奇怪的版本不匹配(不习惯读取ant文件,但我没有看到明显的问题)或者java-to-javascript编译器没有正确执行重载。
因此,为了解决这个问题,我去了旧学校,并使用了一个围绕ByteArrayOutputStream的PrintStream。再次,这是使用ant javac目标编译的。这次我得到了一个更奇怪的错误:
00:00:46.700 [ERROR] Line 72: The method close() is undefined for the type PrintStream
flush()也会发生同样的事情。我无法相信一个叫做“Stream”的东西没有close()或flush()方法。这是怎么回事?
我正在运行OS X 10.6.8(x86)的最新版本。 我的浏览器是Chrome:16.0.912.63(Official Build 113337) $ java -version java版“1.6.0_29” Java(TM)SE运行时环境(版本1.6.0_29-b11-402-10M3527) Java HotSpot(TM)64位服务器VM(内置20.4-b02-402,混合模式) 我正在使用gwt-2.4.0。