0

在我的 gwt 应用程序中,有人开发了一个使用 java.beans.PropertyChangeSupport 的模块。最近我开始使用该模块并在运行时收到The import java.beans cannot be resolved 错误。但应用程序运行良好。为什么我在 gwt 开发模式窗口中出现编译器错误?有任何想法吗?

00:17:33.079  [ERROR] Errors in 'file:/D:/workspace/App/src/main/java/com/abc/def/client/extract/pojos/ClientData.java'
00:17:33.079  [ERROR] Line 3: The import java.beans cannot be resolved
00:17:33.079  [ERROR] Line 4: The import java.beans cannot be resolved
00:17:33.079  [ERROR] Line 11: PropertyChangeSupport cannot be resolved to a type
00:17:33.079  [ERROR] Line 14: PropertyChangeSupport cannot be resolved to a type
00:17:33.079  [ERROR] Line 14: PropertyChangeSupport cannot be resolved to a type
00:17:33.079  [ERROR] Line 17: PropertyChangeListener cannot be resolved to a type
00:17:33.079  [ERROR] Line 18: PropertyChangeSupport cannot be resolved to a type
00:17:33.079  [ERROR] Line 21: PropertyChangeListener cannot be resolved to a type
00:17:33.079  [ERROR] Line 22: PropertyChangeSupport cannot be resolved to a type
00:17:33.079  [ERROR] Line 25: PropertyChangeListener cannot be resolved to a type
00:17:33.079  [ERROR] Line 26: PropertyChangeSupport cannot be resolved to a type
00:17:33.079  [ERROR] Line 30: PropertyChangeListener cannot be resolved to a type
00:17:33.079  [ERROR] Line 31: PropertyChangeSupport cannot be resolved to a type
00:17:33.079  [ERROR] Line 36: PropertyChangeListener cannot be resolved to a type
00:17:33.079  [ERROR] Line 36: PropertyChangeSupport cannot be resolved to a type
4

2 回答 2

2

GWT 仅实现JRE 类型的一个子集。DevMode 工作的原因是它针对系统的 JRE 类型编译 Java 源代码以获得更好的运行时性能。运行生产模式编译时,它使用gwt-user.jarat中的文件com/google/gwt/emul/java/...

通用反射与死代码剥离和许多形式的单体优化不兼容,因此 GWT 编译器不实现运行时反射。GWT生成器系统可以在编译时访问模块的整个类型系统,因此您可以实现足够的“静态”反射来满足您的需求。

如果您正在构建一个基于“状态包”的系统,您可能需要查看AutoBeans框架,它通过访问者模式提供轻量级属性反射。

于 2011-02-09T13:34:59.957 回答
2

BobV提到的 AutoBeans 是 GWT 的一个很好的新特性,但是需要重构现有代码才能使用它们。如果您的应用程序已经使用PropertyChangeSupport,则gwtx项目提供java.beans.PropertyChange*类的 GWT 模拟。

于 2011-02-17T20:59:40.593 回答