2011-08-01 97 views
2

在编译GWT类的过程中,我收到了一些编译器异常。我在这里提交了一个bug报告:http://code.google.com/p/google-web-toolkit/issues/detail?id=6623编译GWT代码的JavaScript异常

现在我发现如何使用“draftCompile”来编译它。但是,生成的JavaScript代码在执行时不起作用。

Java源文件都可以从bug跟踪系统,并已编译的项目是在这里:http://clientssh1.rbg.informatik.tu-darmstadt.de:9000/war/Gwittest.html

的错误是:(铬)“遗漏的类型错误:无法读取空的特性‘testpackage_shared_ship_Level_boards’”。在Firefox中,它的另一个错误。

该代码在Dev模式(来自Eclipse)中工作。

我该如何解决这个错误?它与编译/优化错误有关吗?我如何解决它?如果它本身就是一个bug,我也应该报告,不是吗?

编辑:有问题的类是在这里:https://gist.github.com/1139147

+0

我唯一的建议是用-style PRETTY编译它,并试图找出问题的确切位置。我最近遇到了相同症状的问题(http://code.google.com/p/google-web-toolkit/issues/detail?id=6579),解决此问题的唯一方法是比较编译Js与源代码Java,找出编译器搞砸的地方(顺便说一句,当我在最新的firefox中尝试你的应用程序时,它显示了一个完全不同的错误[17:35:46.422]这个$ static是null @ http:// clientssh1。 rbg.informatik.tu-darmstadt.de:9000/war/gwittest/D02B16F23426C7BD8D065C01826B346C.cache.html:9737) – jusio

回答

2

错误听起来像编译的JavaScript包含如下代码:

null.testpackage_shared_ship_Level_boards 

如果GWT优化相信这会发生,你的类型的变量“级别“,其字段”板“读取,必须为空。优化器通常是对的。

所以,一种方法是: 将代码编译为人类可读的JavaScript(-style pretty)。获取javascript错误并找到导致它的行。找到您的Java源代码的相应行,并追溯变量值来自哪里。您可能会发现变量未初始化。

+0

它已经是人类可读的。您可以在错误报告中看到源代码。优化器被禁用。它在开发模式下工作。 –

+0

@ user309483:当你接受了这个答案,我看不出它会有什么帮助,你能描述一下你是如何发现问题的? –

+0

@Paulo:嗯,我认为这是一个GWT编译器错误。我通过运行更多的代码服务器端(即不是GWT编译)解决了这个问题......这个答案显示了努力,我接受它来确认我对GWT编译器有问题的怀疑。另外,我不想让我的接受限额过低,因为我认为这会阻止人们回答我的问题。抱歉。请注意,我有GWT 2.3.0的这个问题,他们可能已经修复了造成它的任何事情。 –